Выдает ошибку, что поставить?
Встречено ‘else’, а ожидался оператор (строка 19)
var a, b, c, d, x1, x2: real;
begin
writeln ('ax2+bx+c=0');
write ('a=');
readln (a);
write ('b=');
readln (b);
write ('c=');
readln (c);
d := (b*b)+(4*a*c);
if (a = 0) then
write ('Уравнение не является квадратным.')
else
if (d > 0) then
d:= sqrt(d);
x1 := (-b+d)/2;
x2 := (-b-d)/2;
write ('x1=', x1, 'x2=', x2);
else
if (d = 0) then
x1 := (-b-d)/2
write ('Единственный x=', x1)
else
write ('Корней нет');
end.
Kromster
13.6k12 золотых знаков43 серебряных знака72 бронзовых знака
задан 17 янв 2019 в 18:10
1
Простые условия должны записываться в виде
if .. then
одна строчка кода
else
одна строчка кода
Если же вам нужно выполнить несколько строк или блоков кода по условию, то следует обернуть их в begin .. end
вот так:
if .. then
begin
..
несколько строк кода
..
end
else
begin
..
несколько строк кода
..
end
Для вашего случая:
if (d > 0) then
begin <<-- тут нужно начать блок
d:= sqrt(d);
x1 := (-b+d)/2;
x2 := (-b-d)/2;
write ('x1=', x1, 'x2=', x2);
end <<-- тут нужно закончить блок
else
<<-- тут блок begin-ом начинать не нужно, т.к. if это уже блок
if (d = 0) then
begin <<-- тут нужно начать блок
x1 := (-b-d)/2
write ('Единственный x=', x1)
end <<-- тут нужно закончить блок
else
write ('Корней нет');
ответ дан 18 янв 2019 в 4:32
KromsterKromster
13.6k12 золотых знаков43 серебряных знака72 бронзовых знака
Написал программу:
Pascal | ||
|
Только вот ошибку выдаёт «Встречено else а ожидался оператор».Посмотрел темы форума, так и не нашёл решения.Погуглил-пишут что надо перед else удалить «;» , но я их удалил и тогда выдаётся ошибка «Встречено Else, а ожидалось ;».
Если закомментировать часть кода с блоком Else то программа работает,правда не совсем как надо. Если закомментировать после if последние две строчки-тоже работает, но опять же не так как надо.В чём дело так и не могу понять.
Пишет вот «Program1.pas(21) : Встречено ‘else’, а ожидался оператор»
program test;
var
sum: real;
percent: real;
period: integer;
profit: real;
result: real;
begin
writeln('Вычисление дохода по в кладу в банке');
writeln;
write('Сумма (руб.) ->');
readln(sum);
write('Срок вклада (дней) ->');
readln(period);
if sum > 5000 then
percent := 0.95;
else
pecent := 0.08;
profit := sum * percent/365 * period;
result := sum +profit;
writeln('Сумма в конце срока вклады: ',
result:6:2, руб.');
writeln('Доход: ', profit:6:2, ' руб.');
write('Для завершения работы нажмите <Enter>');
readln;
end.
почему?
-
Вопрос заданболее трёх лет назад
-
4426 просмотров
Пригласить эксперта
Как вы определили, что не работает?
У вас не Else не работает, а грамматических ошибок полно.
Не нужно ставить точку с запятой после первого
percent := 0.95
во втором pecent := 0.08; нужно писать percent а не pecent
в строке
writeln(‘Сумма в конце срока вклады: ‘,
result:6:2, руб.’);
у вас перед руб не хватает одинарной кавычки.
Неужели так сложно внимательнее быть?
if sum > 5000 then
percent := 0.95;
else
перед ‘else’ ‘;’ не ставится
-
Показать ещё
Загружается…
Сбер
•
Ростов-на-Дону
от 170 000 ₽
25 июн. 2023, в 03:49
15000 руб./за проект
25 июн. 2023, в 03:19
4500 руб./за проект
25 июн. 2023, в 02:28
10000 руб./за проект
Минуточку внимания
Главная
-
- 0
-
Встречено ‘else’, а ожидался оператор(в чём ошибка)
var a: integer;
begin
Writeln (‘Введите число’);
readln(a);
if a mod 2=0
then
Writeln(‘Число чётное’);
else
Writeln(‘Число нечётное’);
readln;
end.
Лев Симинеев
Вопрос задан 7 августа 2019 в
1 — 4 классы,
Информатика.
-
Комментариев (0)
Добавить
Отмена
1 Ответ (-а, -ов)
- По голосам
- По дате
-
- 0
-
Как и говорил, убираем «;» после последнего оператора до else
var a: integer;
begin
Writeln (‘Введите число’);
readln(a);
if a mod 2=0
then
Writeln(‘Число чётное’)
else
Writeln(‘Число нечётное’);
readln;
end.
Отмена
Олеся Биджнева
Отвечено 7 августа 2019
-
Комментариев (0)
Добавить
Отмена
Ваш ответ
Введение
Паскаль — один из наиболее популярных языков программирования. Как и при любом языке, при написании программ на Паскале, могут возникнуть ошибки. В данной статье мы рассмотрим одну из самых распространенных ошибок — ошибка ‘else’.
Ошибка ‘else’
Ошибки с оператором ‘else’ могут произойти во время написания условий ветвления. Ветвление — это то, что происходит, когда программа принимает решение, какой код нужно выполнить в зависимости от значения переменной. Отсутствие ‘else’ или его неправильное использование может привести к непредсказуемым результатам или полной неработоспособности программы.
Пример
Рассмотрим пример:
program example;
begin
writeln('Введите число:');
readln(number);
if (number > 5) then
writeln('Число больше 5')
else
writeln('Число меньше или равно 5');
end.
В данном примере мы запрашиваем у пользователя число и, если оно больше 5, выводим сообщение ‘Число больше 5’. В противном случае выводится сообщение ‘Число меньше или равно 5’. Однако, если пример будет запущен при вводе числа, равного 5, то ничего не будет выведено. В данном случае, нужно добавить условие, что если число равно 5, нужно выводить сообщение об этом:
program example;
begin
writeln('Введите число:');
readln(number);
if (number > 5) then
writeln('Число больше 5')
else if (number = 5) then
writeln('Число равно 5')
else
writeln('Число меньше 5');
end.
Отметим, что если бы мы забыли добавить ‘else’ во втором условии (или забыли добавить само условие), то в случае, если число равно 5, программа бы завершилась с ошибкой.
Итоги
В Паскале условный оператор if может содержать только одно условие и один оператор. Ошибка с оператором ‘else’ часто возникает из-за неправильной формулировки условия. Если вы не добавили оператор ‘else’ или использовали его неправильно, программы не будут работать правильно. Надеюсь, данный материал поможет вам избежать этой ошибки в будущем!