Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2020, 18:56   #1
kiselek
Новичок
Джуниор
 
Регистрация: 09.11.2020
Сообщений: 4
Восклицание пишет Встречен конец файла, а ожидалось ';', на строчке где спрашивается "еще не учишься?", что делать?

begin
writeln('Напишите своё имя');
readln(a);
writeln('Напишите дату рождения, год целиком');
readln(q);
q:=2020-q;
write(' - Привет,',a,'. ');
if q<7 then begin writeln('еще не учишься?');
if (7<q)then; if(q<17) then begin writln (' в каком классе ты учишься?');
readln(l);
if (l>=7) and (l<=8) then
writeln('1 класс')
else if (l>=8) and (l<=9) then
writeln('2 класс');
if (l>=9) and (l<=10) then
writeln('3 класс');
if (l>=10) and (l<=11) then
writeln('4 класс');
if (l>=11) and (l<=12) then
writeln('5 класс');
if (l>=12) and (l<=13) then
writeln('6 класс');
if (l>=13) and (l<=14) then
writeln('7 класс');
if (l>=15) and (l<=16) then
writeln('8 класс');
if (l>=16) and (l<=17) then
writeln('9 класс');
if 18<q then begin writeln ('уже не учишься?');end;
end
kiselek вне форума Ответить с цитированием
Старый 09.11.2020, 19:00   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Begin в коде 4 штуки, а end только 2. Ищите места, где забыли их.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 09.11.2020, 20:07   #3
kiselek
Новичок
Джуниор
 
Регистрация: 09.11.2020
Сообщений: 4
По умолчанию

Теперь пишет ошибку " Нельзя считывать данные этого типа", на строке readlin('a'). Что делать? Что нужно исправь?
begin
writeln('Напишите своё имя');
readln('a');
writeln('Напишите дату рождения, год целиком');
readln('q');
q:=2020-q;
write(' - Привет,',a,'. ');
if q<7 then begin writeln('еще не учишься?'); end;
if (7<q)then; if(q<17) then begin writln (' в каком классе ты учишься?');
readln(l);
if (l>=7) and (l<=8) then
writeln('1 класс')
else if (l>=8) and (l<=9) then
writeln('2 класс');
if (l>=9) and (l<=10) then
writeln('3 класс');
if (l>=10) and (l<=11) then
writeln('4 класс');
if (l>=11) and (l<=12) then
writeln('5 класс');
if (l>=12) and (l<=13) then
writeln('6 класс');
if (l>=13) and (l<=14) then
writeln('7 класс');
if (l>=15) and (l<=16) then
writeln('8 класс');
if (l>=16) and (l<=17) then
writeln('9 класс');end;
if 18<q then begin writeln ('уже не учишься?');end;
end.

Последний раз редактировалось kiselek; 09.11.2020 в 20:26.
kiselek вне форума Ответить с цитированием
Старый 09.11.2020, 20:43   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Что-либо в одинарных кавычках трактуется как строка, а считывать можно только в переменные. Добавьте секцию описания переменных и там объявите переменные a, q, l нужных типов.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 09.11.2020, 20:52   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,552
По умолчанию

И вообще, чтоб код был читаем - для этого существуют тэги CODE
digitalis вне форума Ответить с цитированием
Старый 10.11.2020, 11:16   #6
kiselek
Новичок
Джуниор
 
Регистрация: 09.11.2020
Сообщений: 4
По умолчанию

Программа запустилась, но там чисто вопросы и нельзя вписать данные. Что нужно дописать, чтобы можно было отвечать на вопросы, поставленные программой?
begin
writeln('Напишите своё имя');
var a, q, l : integer;
writeln('Напишите дату рождения, год целиком');
write(' - Привет,',a,'. ');
if q<7 then begin writeln('еще не учишься?'); end;
if (7<q)then; if(q<17) then begin write (' в каком классе ты учишься?');
if (l=7) and (l=8) then
writeln('1 класс')
else if (l=8) and (l=9) then
writeln('2 класс');
if (l=9) and (l=10) then
writeln('3 класс');
if (l=10) and (l=11) then
writeln('4 класс');
if (l=11) and (l=12) then
writeln('5 класс');
if (l=12) and (l=13) then
writeln('6 класс');
if (l=13) and (l=14) then
writeln('7 класс');
if (l=15) and (l=16) then
writeln('8 класс');
if (l=16) and (l=17) then
writeln('9 класс');end;
if 18<q then begin writeln ('уже не учишься?');end;
end.

Последний раз редактировалось kiselek; 10.11.2020 в 11:57.
kiselek вне форума Ответить с цитированием
Старый 10.11.2020, 12:13   #7
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Код:
if (7<q)then; if(q<17) then begin writln(' в каком классе ты учишься?');
Форма условного оператора:
Код:
if <условие> then <операторы>;
или
Код:
if <условие> then
   <операторы>
else
   <операторы>;
тут <операторы> - это один или несколько операторов. Если операторов несколько, то они заключаются в операторные скобки. В Паскале это begin <группа операторов> end.
Точка с запятой разделяет операторы, см. вторую форму условного оператора. Там перед else точка с запятой не ставится.
Вопрос:
Что делает точка с запятой сразу после then?
В этой строке проверяется условие 7 < q и если оно истинно, то ничего не делается, а если false, то тоже ничего не делается. Эту часть можно переписать так:
if (7 < q) then <Ничего не делать>;
Но ошибка возникает.
Смотрим выше, тут:
Код:
begin
writeln('Напишите своё имя');
var a,q,l: integer;
begin - первая операторная скобка (открывающаяся), которая используется для заключения всего тела программы.
Закрывающаяся скобка - end. Тут точка является обязательной.
Далее следует сообщение: 'Напишите своё имя'
Непонятно в какой момент писать, так как следом идёт область описания переменных, которая должна быть выше тела программы, а значит выше первого слова begin.
Затем следует сообщение: 'Напишите дату рождения, год целиком'. И с чем его связать?
Так как тебе нужен только год рождения, то так и пиши: 'Введите год рождения [YYYY]: '.
В квадратных кавычках указал формат вводимых данных. Можно попросить ввести 4- цифры года рождения.

Если покороче:
Посмотри как оформляется программа в Паскале. Какая область за какой следует?
Посмотри как записывается условный оператор.
Посмотри, с какой целью используется процедура readln().

Успехов.

PS: Если написать подряд несколько точек с запятой, то ничего не произойдёт, поскольку отсутствие операторов между этими символами означает только одно - ничего не делать.

PSS: И да! Вставляя код или набирая его ручками, сделай так:
1. Выдели код
2. Нажми на кнопку [CODE], которая находится над полем ввода.
В этом случае код смотрится правильно, если он будет отформатирован.
Код следует форматировать, а операторы лучше писать в отдельных строках.
Как-то так, ...

Последний раз редактировалось ViktorR; 10.11.2020 в 12:17.
ViktorR вне форума Ответить с цитированием
Старый 10.11.2020, 13:11   #8
kiselek
Новичок
Джуниор
 
Регистрация: 09.11.2020
Сообщений: 4
По умолчанию

ViktorR, спасибо)
kiselek вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
pgAdmin 4 При сжатии окна по горизонтали некоторые кнопки "вылезли", но"save" или"Ok" не увидел все равно. Что делать ? vadim_v SQL, базы данных 0 16.06.2020 20:44
Пишет "Нет диска в дисководе" и "Неопознаный диск" при установке ХР - Windows XP lleonid Операционные системы общие вопросы 11 21.06.2017 19:41
[Pascal ABC] В 7-ой строке пишет,что ожидалось имя процедуры или функции,не понимаю как это исправить и что делать! SMOKE SMOKE Паскаль, Turbo Pascal, PascalABC.NET 2 16.06.2017 18:57
Чего делать с ошибкой "требуется имя файла"? tsvigo Visual C++ 3 26.07.2016 19:18
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23