Выдает ошибку, что поставить?
Встречено ‘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.2k12 золотых знаков41 серебряный знак70 бронзовых знаков
задан 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.2k12 золотых знаков41 серебряный знак70 бронзовых знаков
Ожидался оператор PASCAL
program kvadratn;
var A,B,C,x1,x2,D:integer;
begin;
Writeln(‘Дано уравнение вида Ax^2+Bx+C=0’);
Writeln(‘Задайте коэффициент A’);
Readln(A);
Writeln(‘Задайте коэффициент B’);
Readln(B);
Writeln(‘Задайте коэффициент C’);
Readln(C);
D:=B*B-4*A*C;
Write(‘Дискриминант равен: ‘);
Writeln(D);
x1:=((-B+sqrt(D))/2*A);
x2:=((-B-sqrt(D))/2*A);
Writeln(‘Корни: ‘);
if (D>=0) then writeln(x1); Writeln(x2);
else writeln(‘Корней нет’);
end.
Написал вот такую программку которая должна вычислять корни квадратного уравнения.
Но при запуске её, выдаёт ошибку и пишет что ожидался оператор и подчёркивает строчку «else writeln(‘корней нет’)
пожалуйста подскажите в чём проблема
Ошибок море.
После begin и перед else точка с занятой недопустима.
Недопустимо присвоение целочисленным переменным чисел с плавающей запятой, а извлечение квадратного корня возвращает действительное значение.
Неверно написаны формулы вычисления корней x1 и x2.
Если дискриминант меньше нуля, то всё равно будет выполняться извлечение корня из этого отрицательного значения, что вызовет runtime ошибку.
program kvadratn;
var A,B,C,x1,x2,D:real;
begin
Writeln(‘Дано уравнение вида Ax^2+Bx+C=0’);
Writeln(‘Задайте коэффициент A’);
Readln(A);
Writeln(‘Задайте коэффициент B’);
Readln(B);
Writeln(‘Задайте коэффициент C’);
Readln(C);
D:=B*B-4*A*C;
Write(‘Дискриминант равен: ‘);
Writeln(D);
if D 0 then Writeln(x2);
end;
end.
if D=0 then writeln(x1)
else if D>0
begin
Writeln(x1) ;
Writeln(x2) ;
end
else writeln(‘Корней нет’);
так правильнее будет . зачем тебе при D=0 выводить оба значения (они ведь одинаковые)
if (D>=0) then
begin
writeln(x1); Writeln(x2);
end;
else writeln(‘Корней нет’);
1000лет и один день не программировал на паскале!
Посмотри третью строку снизу: после тhen два writeln, это допускается? Попробуй сделать один writeln или если тебе очень надо, составной оператор.
Что значит ожидался оператор в паскале
Помогите пожалуйста не могу разобраться почему когда я добавила procedure r15(xa,xb,xc,xd,ya,yb,yc,yd:real);x 1,x2,x3,y1,y2,y3,pt1,pt2,pt3,s:real ;
unit Lib15;
interface
программа пишет «ожидался оператор»
var
xa,xb,xc,xd,ya,yb,yc,yd:real;
x1,x2,x3,y1,y2,y3:real;
pt1,pt2,pt3,s:real;
begin
write(‘Введите координаты точки А: ‘);
Readln(xa,ya);
write(‘Введите координаты точки B ‘);
Readln(xb,yb);
write(‘Введите координаты точки C ‘);
Readln(xc,yc);
write(‘Введите координаты точки D ‘);
Readln(xd,yd);
procedure r15(xa,xb,xc,xd,ya,yb,yc,yd:real);x 1,x2,x3,y1,y2,y3,pt1,pt2,pt3,s:real ;
unit Lib15;
interface
begin
x1:=xa;
if x1>xb then x1:=xb;
if x1>xc then x1:=xc;
if x1>xd then x1:=xd;
end;
begin
y2:=ya;
if y2<yb then y2:=yb;
if y2<yc then y2:=yc;
if y2<yd then y2:=yd;
end;
begin
x3:=xa;
if x3<xb then x3:=xb;
if x3<xc then x3:=xc;
if x3<xd then x3:=xd;
end;
begin
if x1=xa then y1:=ya;
if x1=xb then y1:=yb;
if x1=xc then y1:=yc;
if x1=xd then y1:=yd;
end;
begin
if y2=ya then x2:=xa;
if y2=yb then x2:=xb;
if y2=yc then x2:=xc;
if y2=yd then x2:=xd;
end;
begin
if x3=xa then y3:=ya;
if x3=xb then y3:=yb;
if x3=xc then y3:=yc;
if x3=xd then y3:=yd;
end;
pt1 := ((y2+(x2*((y3-y1)/(x3-x1))))-(y1+(x1*((y3-y1)/(x3-x1)))));
pt2 := ((x3+(y3*((y3-y1)/(x3-x1))))-(x1+(y1*((y3-y1)/(x3-x1)))));
pt3 := (sqr(x1-x3))/((sqr(y1-y3))+(sqr(x1-x3)));
s := pt1*pt2*pt3;
end;
writeln(‘Площать равна = ‘, s)
end.
Ошибка в простой задаче: пишет ожидался оператор, а встретил else
Pascal. Ошибка в простой задаче: пишет ожидался оператор, а встретил else.
Среда программирования PascalABC.NET, по моей блок-схеме все верно, разделы операторов вроде все на месте, в чем может быть ошибка? Или у меня косоглазие просто?
Перед ЭТИМ else, еще 1 end должен быть.
Всё ещё ищете ответ? Посмотрите другие вопросы с метками pascal pascalabc.net или задайте свой вопрос.
Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.10.42345
Нажимая «Принять все файлы cookie», вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Сообщения без ответов | Активные темы
| Автор | Сообщение | ||
|---|---|---|---|
|
Turgenev1337 |
Заголовок сообщения: Не могу найти ошибку в программе
|
||
|
var a,b,c,d,f:integer; Пишет: Встречено ‘else’, а ожидался оператор
|
||
| Вернуться к началу |
|
||
| Похожие темы | Автор | Ответы | Просмотры | Последнее сообщение |
|---|---|---|---|---|
|
Не могу найти ошибку
в форуме Дифференциальное исчисление |
Veinar |
10 |
623 |
20 апр 2014, 16:45 |
|
Не могу найти ошибку
в форуме Дискретная математика, Теория множеств и Логика |
Th1e4 |
1 |
279 |
24 дек 2016, 16:00 |
|
Не могу найти ошибку в ДУ Бернулли
в форуме Дифференциальные и Интегральные уравнения |
AlexOblom |
3 |
686 |
17 авг 2018, 19:35 |
|
Несостыковка. не могу найти ошибку
в форуме Комбинаторика и Теория вероятностей |
Vlasovn109 |
4 |
573 |
15 фев 2017, 22:06 |
|
Не могу найти ошибку в суждениях
в форуме Алгебра |
ghsrt |
6 |
510 |
16 апр 2017, 00:14 |
|
Не могу найти ошибку в модели Simulink
в форуме MATLAB |
Elena1000 |
4 |
410 |
20 фев 2017, 14:11 |
|
Реакция опор( не могу найти ошибку)
в форуме Специальные разделы |
djeak11 |
1 |
403 |
22 сен 2016, 23:25 |
|
Не могу найти ошибку (интегрирование иррациональных ф-ий)
в форуме Интегральное исчисление |
lina_06 |
1 |
112 |
09 апр 2022, 04:29 |
|
Не могу найти ошибку. Дисперсия получается отрицательная
в форуме Теория вероятностей |
Dushescbx |
0 |
199 |
25 ноя 2017, 20:07 |
|
Не могу найти ошибку (противоречие) в своих доказательствах
в форуме Начала анализа и Другие разделы школьной математики |
K_A |
2 |
276 |
14 фев 2019, 19:08 |
Кто сейчас на конференции |
|
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1 |
| Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB
Главная
-
- 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)
Добавить
Отмена






