Программа представлена на скрине.
Далее под константой будет пониматься макроопределение (символическая константа)
Были созданы константы для обозначения флагов ингредиентов. Им даны осмысленные названия. Также была создана константа для формирования пустого заказа.
int ingredientsCount(Pizza&); - возвращает количество ингредиентов.
void addCheese(Pizza&); - добавляет в заказ сыр
void removeOnion(Pizza&); - убирает из заказа лук
void togglePineapple(Pizza&); - переключает ананасы
void addOnionIfMushroomsExist(Pizza&); - добавляет лук если есть грибы
program ostan;
var N,I,J,res: integer;
prov:real;
begin
writeln('Введите количество остановок на маршруте автобуса: ');
read(N);
writeln('Введите пункт отправления ');
read(I);
writeln('Введите конечную остановку ');
read(J);
//N должно быть >1, т.к. для корректного выполнения задачи у нас должно быть хотябы 2 остановки
//I<N+1; +1 для того, что I или J могут быть крайними
//I<>J означает I не равно J, т.к. если мы отправляемся на ту-же остановку, где мы сейчас находимся, ездить незачем
if ((N>1)and(I<N+1)and(J<N+1)and(I<>J)) then
begin
//Тут вводится переменная prov - проверка, как нам короче ехать, от меньшего к большему или в обратную сторону
prov:=N/2;
if (I<J) then if (prov>J-I) then res:=J-I-1 else res:=N-J+I-1 //если I<J, и если разница J-I < prov, то нам выгоднее ехать по прямой, если >, то в обратную сторону
else if (prov>I-J) then res:=I-J-1 else res:=N-I+J-1; // то-же самое, только для I>J
writeln();
writeln('Количество остановок между пунктами = ',res);
end
else writeln(); writeln('ДАННЫЕ НЕ КОРРЕКТНЫ, ОШИБКА ВВОДА');
end.
Хоть какая-то интересная задача на этом сервисе)
1) 9
2) 3
3) 8
4) 3
5) 6