Pascal. Ошибка в простой задаче: пишет ожидался оператор, а встретил else.
program MaxIn_3;
var
x, y, z, res: real;
begin
writeln('Введите целые числа: X, Y, Z');
readln(x, y, z);
res := x + y + z;
if (res < 1) then
begin
if (x > y) and (x <> y) then
begin
y := (y + z) / 2;
writeln('X=', x, ',', 'Y=', y, ',', 'Z=', z, '.');
end
else
begin
if (y > x) and (x <> y) then
begin
x := (y + z) / 2;
writeln('X=', x, ',', 'Y=', y, ',', 'Z=', z, '.');
end
else
begin
Writeln('X=Y,',x,'=',y);
end;
**end;// - если убрать здесь ; то пишет MaxIn_3.pas(29) : Встречено 'else', а ожидалось ';'**
**else** //вот здеся ошибка, видимо мне мозгов не хватает понять
begin
if (x>y) and (x <> y) then
begin
x:=x*y;
writeln('X=', x, ',', 'Y=', y, ',', 'Z=', z, '.');
end
else
begin
if (y>x) and (x <> y) then
begin
y:=x*y;
writeln('X=', x, ',', 'Y=', y, ',', 'Z=', z, '.');
end
else
begin
Writeln('X=Y,',x,'=',y);
end;
end;
end;
end;
end.
Среда программирования PascalABC.NET, по моей блок-схеме все верно, разделы операторов вроде все на месте, в чем может быть ошибка? Или у меня косоглазие просто?
|
Dmitry37 1 / 1 / 0 Регистрация: 06.12.2011 Сообщений: 15 |
||||
|
1 |
||||
Исправить ошибку «ожидался оператор»10.01.2012, 15:13. Показов 30176. Ответов 3 Метки нет (Все метки)
Program vector;
__________________
0 |
|
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
10.01.2012, 15:13 |
|
Ответы с готовыми решениями: Исправить ошибку «ожидался оператор» Ошибка «Ожидался оператор» при вычислении выражения Поиск суммы положительных четных чисел и ошибка «Ожидался оператор» var q:real; Массив записей о городах: «ожидался оператор» 3 |
|
Puporev Почетный модератор 64270 / 47569 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
||||
|
10.01.2012, 15:17 |
2 |
|||
|
РешениеИсправить очень сложно, примерно так.
точку с запятой поставить.
1 |
|
1851 / 1173 / 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 |
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.
Пишет вот «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.
почему?
-
Вопрос заданболее трёх лет назад
-
4263 просмотра
Пригласить эксперта
Как вы определили, что не работает?
У вас не Else не работает, а грамматических ошибок полно.
Не нужно ставить точку с запятой после первого
percent := 0.95
во втором pecent := 0.08; нужно писать percent а не pecent
в строке
writeln(‘Сумма в конце срока вклады: ‘,
result:6:2, руб.’);
у вас перед руб не хватает одинарной кавычки.
Неужели так сложно внимательнее быть?
if sum > 5000 then
percent := 0.95;
else
перед ‘else’ ‘;’ не ставится
-
Показать ещё
Загружается…
30 янв. 2023, в 11:58
500 руб./за проект
30 янв. 2023, в 11:55
2000 руб./за проект
30 янв. 2023, в 11:41
1600 руб./в час
Минуточку внимания
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.
1000лет и один день не программировал на паскале!
Посмотри третью строку снизу: после тhen два writeln, это допускается? Попробуй сделать один writeln или если тебе очень надо, составной оператор.
if (D>=0) then
begin
writeln(x1); Writeln(x2);
end;
else writeln(‘Корней нет’);
if D=0 then writeln(x1)
else if D>0
begin
Writeln(x1) ;
Writeln(x2) ;
end
else writeln(‘Корней нет’);
так правильнее будет . зачем тебе при D=0 выводить оба значения (они ведь одинаковые)
Пишет вот «Program1.pas(21) : Встречено ‘else’, а ожидался оператор»
- Вопрос задан более трёх лет назад
- 2665 просмотров
![]()
Как вы определили, что не работает?
У вас не Else не работает, а грамматических ошибок полно.
Не нужно ставить точку с запятой после первого
percent := 0.95
во втором pecent := 0.08; нужно писать percent а не pecent
в строке
writeln(‘Сумма в конце срока вклады: ‘,
result:6:2, руб.’);
у вас перед руб не хватает одинарной кавычки.
![]()
В прошлом, первом уроке о паскале мы обсудили структуру программы и самые первые операторы, а также служебные слова. Сегодня я расскажу про основные операторы, с помощью которых уже можно написать первую программу.
Первым, что мы рассмотрим — это оператор присваивания. Без этого оператора мы не сможем обойтись дальше.
Его функция — это присваивания значения переменной после каких либо действий или значения другой переменной.
X-это переменная, пусть она будет равна 2, в программе это будет выглядеть так:
Я думаю, что Вы уже заметили, что на деле она выглядит, как двоеточие со знаком равно (:=).
Операторы сложения, вычитания и умножения
На второе у нас пойдут операторы сложения, вычитания и умножения.
Сложение
С помощью данного оператора мы можем сложить два числа, в программе он пишется, как «+» без кавычек:
Тут мы переменной X присвоили 11, полученное сложением 5 и 6.
Вычитание
В этом операторе тоже ничего сложного нет, он выполняет вычитание двух чисел. В программе обозначается, как «-» без кавычек:
Выше мы x присвоили 3, полученное действием вычитания чисел 7 и 4.
Умножение
Данный оператор умножает два числа друг на друга, обозначается, как «*» также без кавычек:
В примере мы нашей переменной X присвоили число 16, полученное умножением восьми на два.
Вы уже заметили, что я написал не оператор деления, а операторы. Это связано с тем, что операторов деления — три, и все они работают по разному и выполняют разные действия.
1. Простое деление
Простое деление выполняется с помощью оператора вида /, он просто делит одно число на другое. Данный оператор работает только с типом real!
В примере мы x присвоили 9,6, посредством деления 48 на 5.
2. Целочисленное деление
Данное делит число только на цело, то есть при таком способе деления невозможно получить десятичную или периодическую дробь. В программе пишется, как «div» без кавычек. Данный оператор работает только с типом integer!
В данном примере x у нас будет равно в итоге 9, а не 9,6, как это должно получиться при нормальном обычном делении.
3. Получение остатка
Данный способ позволяет получить не само число, которое должно получится, а остаток. Допустим при делении 48 на 5 мы получим 3 при таком способе деления. В программе обозначается, как «mod» без кавычек:
Теперь давайте попробуем написать простейший калькулятор, который выполняет с нашими двумя числами все действия сразу.
Итак, сегодня мы познакомились с операторами сложения, вычитания, умножения, тремя операторами деления, а также оператором присваивания. После сегодняшнего урока вы уже можете создавать свои простейшие программы на счёт.
- Распечатать
Оцените статью:
- 5
- 4
- 3
- 2
- 1
(0 голосов, среднее: 0 из 5)
Поделитесь с друзьями!
-
-
Предмет:
Информатика
-
Автор:
lawsonmccullough867
-
Создано:
3 года назад
Ответы
Знаешь ответ? Добавь его сюда!
-
-
Математика0 секунды назад
В правильной треугольной пирамиде боковое ребро равно 2; площадь боковой грани равна . Найдите площадь основания пирамиды.
-
Химия4 минуты назад
Химия 9 класс
-
Информатика4 минуты назад
Задание по информатике 9 класс. ПОМОГИТЕ ПОЖАЛУЙСТА УМНЫЕ ЛЮДИ
-
Алгебра4 минуты назад
Задача по математике
-
Русский язык9 минут назад
Преимущественно обучающихся как понять это простыми словами
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Вы не можете общаться в чате, вы забанены.
Чтобы общаться в чате подтвердите вашу почту
Отправить письмо повторно
Вопросы без ответа
-
Математика0 секунды назад
В правильной треугольной пирамиде боковое ребро равно 2; площадь боковой грани равна . Найдите площадь основания пирамиды.
-
Русский язык20 минут назад
Во дворе раздаётся громкий детский смех подчеркнуть грамматическую основу
Топ пользователей
-

Fedoseewa27
22978
-

Sofka
7419
-

zlatikaziatik
5707
-

vov4ik329
5111
-

DobriyChelovek
4625
-

olpopovich
3461
-
TheDenty
3258
-

dobriykaban
2540
-
Udachnick
1867
-

ViktoriaBell0
1740
Войти через Google
или
Запомнить меня
Забыли пароль?
У меня нет аккаунта, я хочу Зарегистрироваться
Выберите язык и регион
Русский
Россия
English
United States
How much to ban the user?
1 hour
1 day
Сообщение было отмечено Памирыч как решение