Dmitry37 1 / 1 / 0 Регистрация: 06.12.2011 Сообщений: 15 |
||||
1 |
||||
Исправить ошибку «ожидался оператор»10.01.2012, 15:13. Показов 32680. Ответов 3 Метки нет (Все метки)
Program vector;
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
10.01.2012, 15:13 |
Ответы с готовыми решениями: Исправить ошибку «ожидался оператор» Ошибка «Ожидался оператор» при вычислении выражения Поиск суммы положительных четных чисел и ошибка «Ожидался оператор» var q:real; Массив записей о городах: «ожидался оператор» 3 |
Puporev Почетный модератор 64289 / 47588 / 32739 Регистрация: 18.05.2008 Сообщений: 115,181 |
||||
10.01.2012, 15:17 |
2 |
|||
Сообщение было отмечено Памирыч как решение РешениеИсправить очень сложно, примерно так.
точку с запятой поставить.
1 |
1852 / 1174 / 190 Регистрация: 27.03.2009 Сообщений: 4,514 |
|
10.01.2012, 15:17 |
3 |
точку с запятой поставь после Writeln(‘элементы матрицы y’)
0 |
1 / 1 / 0 Регистрация: 06.12.2011 Сообщений: 15 |
|
10.01.2012, 15:20 [ТС] |
4 |
Спасибо, согласен, тупанул))
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
10.01.2012, 15:20 |
4 |
Выдает ошибку, что поставить?
Встречено ‘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 бронзовых знака
Пишет вот «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 руб./за проект
Минуточку внимания
program ideal; uses crt; var k, n, m, t, p, x, y, z, s, l, q, a, b, c, e, i, TTT:real; d:char; soglasie, sogl, formuly, zzz:integer; function FF(a,l:real):real; Begin l:=t*100; a:=p/l; k:=a*2; FF:=k; end; Begin Write('Ваше имя и фамилия: '); readln(d); // Приветствие Writeln('Здравствуйте! Уважаемая ', d); writeln('Считаю нужным заострить ваше внимание на том, что все данные, которые вы получите при использовании этой программы являются примерными.'); Writeln('Если вы хотите пройти тест введите 1, если нет, то 0.'); write('Ваш ответ: '); readln(soglasie); if soglasie=0 then writeln('Тогда я вынужден попрощаться!'); if soglasie=1 then Write('Ваш возраст: '); readln(e); write('Обхват бюста: '); readln(k); write('Обхват талии: '); readln(n); write('Обхват бедер: '); readln(m); write('Рост: '); readln(t); write('Вес: '); readln(p); write('Размер груди: '); readln(s); write('Длинна ног: '); readln(l); write('Размер ноги: '); readln(q); x:=k*m*t; y:=n*n*p; z:=x/y; a:=s*k*p; b:=l*q; c:=a/b; i:=z/c*100; writeln('Оценка красоты: ', round(i)); write('Хотите ли узнать, какой вес и рост нормален в вашем возрасте? да = 1, нет = 0'); readln(sogl); if sogl=0 then writeln(' '); if sogl=1 then writeln('Каким способом подсчета вы хотите воспользоваться?'); writeln('"Индекс массы тела" = 1'); writeln('"При помощи таблиц" = 2'); writeln('"Рост+возраст" = 3'); writeln('Все варианты последовательно = 0'); writeln('Ваш ответ: '); readln(formuly); if formuly=1 then write('Введите данное (', k, ') число еще раз: '); readln(TTT); if TTT<=18 then writeln('Ваш вес является недостаточным.'); if (TTT>18) and (k<=25) then writeln('Ваш вес вполне нормальный. Это значит, что нет смысла его сбрасывать, но и набирать не нужно. Держите показатель на одном и том же <уровне>.'); if (TTT>25) and (k<35) then writeln('Пора уже поработать с фигуркой, так как возрастает риск появления ожирения. Худейте, но делайте это без особого фанатизма!'); if TTT>=35 then writeln('Очень жаль, но у вас:. Ожирение! Необходима помощь и консультация специалистов.'); //нормальный рост при данном возрасте writeln('Нормальный рост в вашем возрасте (', e, ') составляет: '); if e=0 then writeln('до 74 см'); if e=1 then writeln('до 86.4 см'); if e=2 then writeln('до 98 см'); if e=3 then writeln('до 101 см'); if e=4 then writeln('до 104 см'); if e=5 then writeln('до 110.5 см'); if e=6 then writeln('до 118 см'); if e=7 then writeln('до 125 см'); if e=8 then writeln('до 131.6 см'); if e=9 then writeln('до 136.5 см'); if e=10 then writeln('до 142.5 см'); if e=11 then writeln('до 148.6 см'); if e=12 then writeln('до 155 см'); if e=13 then writeln('до 160.5 см'); if e=14 then writeln('до 164 см'); if e=15 then writeln('до 167 см'); if e=16 then writeln('до 169 см'); if e=17 then writeln('до 170 см'); // Нормальный вес при данном возрасте writeln('Нормальный вес, при вашем возрасте (', e, ') '); if e=0 then writeln('до 7.9 кг'); if e=1 then writeln('до 10.2 кг'); if e=2 then writeln('до 12.2 кг'); if e=3 then writeln('до 14 кг'); if e=4 then writeln('до 18.2 кг'); if e=5 then writeln('до 20.2 кг'); if e=6 then writeln('до 22.4 кг'); if e=7 then writeln('до 25 кг'); if e=8 then writeln('до 28.2 кг'); if e=9 then writeln('до 31.9 кг'); if e=10 then writeln('до 34.9 кг'); if e=11 then writeln('до 38.9 кг'); if e=12 then writeln('до 45.4 кг'); if e=13 then writeln('до 52.5 кг'); if e=14 then writeln('до 58 кг'); if e=15 then writeln('до 60.4 кг'); if e=16 then writeln('до 61.3 кг'); if e=17 then writeln('до 61.9 кг'); // Прощание writeln('На этом вынужден проститься, в следующих версиях программы вы сможете получать советы по корректировке фигуры.'); writeln(''); writeln(' '); writeln('<br>'); writeln('Все данные не являются исключительно точными'); end.
Ошибок море.
После 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(‘Действительных корней нет’)
else
begin
x1:=(-B+sqrt(D))/2/A;
x2:=(-B-sqrt(D))/2/A;
Writeln(‘Корни: ‘);
writeln(x1);
if D > 0 then Writeln(x2);
end;
end.