Здравствуйте. Помогите на Pascal сделать программу, которая считает оставшееся количество дней до лета (с вводом дня, месяца с клавиатуры).
Спасибо!
Домашние задания: Информатика
Помогите на Pascal сделать программу, которая считает количество дней до лета.
Изучай ( убери " * ") https*://w*ww.cyberfo*rum*.ru/pascal*abc/thread12*65939.*html
Program Dni;
uses crt;
var b, bny, d, ch, m, tny: integer;
begin
clrscr;
writeln ('Эта программа считает количество оставшихся дней до наступления лета. Вводите необходимые данные, после чего нажимайте Enter.');
write ('Этот год является високосным? Для ответа "Да" введите цифру 1, для ответа "Нет" - цифру 2: ');
readln (b);
if (b<>0) and (b<>1) then write ('Ошибка: неправильно введены данные. Программа завершена. Для повторения попытки перезапустите программу.') else begin
write ('Введите номер месяца: ');
readln (m);
if (m<=0) and (m>=12) then write ('Ошибка: некорректно введён номер месяца. Программа завершена. Для повторения попытки перезапустите программу.') else begin
write ('Введите день месяца: ');
readln (ch);
if ch<=0 then write ('Ошибка: некорректно введён день месяца. Программа завершена. Для повторения попытки перезапустите программу.') else
if (b=0) and (m=2) and (ch>28) then write ('Ошибка: в феврале этого года не может быть более 28 дней. Программа завершена. Для повторения попытки перезапустите программу.') else
if (b=1) and (m=2) and (ch>29) then write ('Ошибка: в феврале этого года не может быть более 29 дней. Программа завершена. Для повторения попытки перезапустите программу.') else
if ((m=4) and (ch>30)) or ((m=6) and (ch>30)) or ((m=9) and (ch>30)) or ((m=11) and (ch>30)) then write ('Ошибка: в этом месяце года не может быть более 30 дней. Программа завершена. Для повторения попытки перезапустите программу.') else
if ch>31 then write ('Ошибка: в месяце не может быть более 31 дня. Программа завершена. Для повторения попытки перезапустите программу.') else
begin
if (m=1) and (b=0) then d:=31-ch+28+2*31+30;
if (m=1) and (b=1) then d:=31-ch+29+2*31+30;
if (m=2) and (b=0) then d:=28-ch+2*31+30;
if (m=2) and (b=1) then d:=29-ch+2*31+30;
if m=3 then d:=31-ch+30+31;
if m=4 then d:=30-ch+31;
if m=5 then d:=31-ch;
if (m>=6) and (m<=8) then begin
writeln ('Лето текущего года уже настало.');
write ('Вы хотите посчитать количество дней до лета следующего года? Для ответа "Да" введите цифру 1, для ответа "Нет" - цифру 2: ');
readln (tny);
if (tny<>0) and (tny<>1) then write ('Ошибка: неправильно введены данные. Программа завершена. Для повторения попытки перезапустите программу.') else
if b=1 then begin
if m=6 then d:=30-ch+7*31+3*30+28;
if m=7 then d:=31-ch+6*31+3*30+28;
if m=8 then d:=31-ch+5*31+3*30+28;
end else begin
write ('Следующий год будет високосным? Для ответа "Да" введите цифру 1, для ответа "Нет" - цифру 2: ');
readln (bny);
if (bny<>0) and (bny<>1) then write ('Ошибка: неправильно введены данные. Программа завершена. Для повторения попытки перезапустите программу.') else begin
if (m=6) and (bny=0) then d:=30-ch+7*31+3*30+28;
if (m=6) and (bny=1) then d:=30-ch+7*31+3*30+29;
if (m=7) and (bny=0) then d:=31-ch+6*31+3*30+28;
if (m=7) and (bny=1) then d:=31-ch+6*31+3*30+29;
if (m=8) and (bny=0) then d:=31-ch+5*31+3*30+28;
if (m=8) and (bny=1) then d:=31-ch+5*31+3*30+29;
end;
end;
end;
Чёрт, места не хватает - продолжение в комментарии к этому ответу. Т. е. просто дальше вставляете/переписываете.
uses crt;
var b, bny, d, ch, m, tny: integer;
begin
clrscr;
writeln ('Эта программа считает количество оставшихся дней до наступления лета. Вводите необходимые данные, после чего нажимайте Enter.');
write ('Этот год является високосным? Для ответа "Да" введите цифру 1, для ответа "Нет" - цифру 2: ');
readln (b);
if (b<>0) and (b<>1) then write ('Ошибка: неправильно введены данные. Программа завершена. Для повторения попытки перезапустите программу.') else begin
write ('Введите номер месяца: ');
readln (m);
if (m<=0) and (m>=12) then write ('Ошибка: некорректно введён номер месяца. Программа завершена. Для повторения попытки перезапустите программу.') else begin
write ('Введите день месяца: ');
readln (ch);
if ch<=0 then write ('Ошибка: некорректно введён день месяца. Программа завершена. Для повторения попытки перезапустите программу.') else
if (b=0) and (m=2) and (ch>28) then write ('Ошибка: в феврале этого года не может быть более 28 дней. Программа завершена. Для повторения попытки перезапустите программу.') else
if (b=1) and (m=2) and (ch>29) then write ('Ошибка: в феврале этого года не может быть более 29 дней. Программа завершена. Для повторения попытки перезапустите программу.') else
if ((m=4) and (ch>30)) or ((m=6) and (ch>30)) or ((m=9) and (ch>30)) or ((m=11) and (ch>30)) then write ('Ошибка: в этом месяце года не может быть более 30 дней. Программа завершена. Для повторения попытки перезапустите программу.') else
if ch>31 then write ('Ошибка: в месяце не может быть более 31 дня. Программа завершена. Для повторения попытки перезапустите программу.') else
begin
if (m=1) and (b=0) then d:=31-ch+28+2*31+30;
if (m=1) and (b=1) then d:=31-ch+29+2*31+30;
if (m=2) and (b=0) then d:=28-ch+2*31+30;
if (m=2) and (b=1) then d:=29-ch+2*31+30;
if m=3 then d:=31-ch+30+31;
if m=4 then d:=30-ch+31;
if m=5 then d:=31-ch;
if (m>=6) and (m<=8) then begin
writeln ('Лето текущего года уже настало.');
write ('Вы хотите посчитать количество дней до лета следующего года? Для ответа "Да" введите цифру 1, для ответа "Нет" - цифру 2: ');
readln (tny);
if (tny<>0) and (tny<>1) then write ('Ошибка: неправильно введены данные. Программа завершена. Для повторения попытки перезапустите программу.') else
if b=1 then begin
if m=6 then d:=30-ch+7*31+3*30+28;
if m=7 then d:=31-ch+6*31+3*30+28;
if m=8 then d:=31-ch+5*31+3*30+28;
end else begin
write ('Следующий год будет високосным? Для ответа "Да" введите цифру 1, для ответа "Нет" - цифру 2: ');
readln (bny);
if (bny<>0) and (bny<>1) then write ('Ошибка: неправильно введены данные. Программа завершена. Для повторения попытки перезапустите программу.') else begin
if (m=6) and (bny=0) then d:=30-ch+7*31+3*30+28;
if (m=6) and (bny=1) then d:=30-ch+7*31+3*30+29;
if (m=7) and (bny=0) then d:=31-ch+6*31+3*30+28;
if (m=7) and (bny=1) then d:=31-ch+6*31+3*30+29;
if (m=8) and (bny=0) then d:=31-ch+5*31+3*30+28;
if (m=8) and (bny=1) then d:=31-ch+5*31+3*30+29;
end;
end;
end;
Чёрт, места не хватает - продолжение в комментарии к этому ответу. Т. е. просто дальше вставляете/переписываете.
Вар
Дни : интеджер
Месяц : интеджер
Бегин
Дни=0
Месяц=0
Пока месяц меньше 6 делать
(
если месяц==1
дни=дни+31
если месяц ==2
Дни=дни+28
Если месяц==3
Дни=дни+31
Если месяц ==4
Дни=дни+30
Если месяц ==5
Дни =дни+31
Месяц=месяц+1
)
Принтлн "количество дней" дни
Енд
Дни : интеджер
Месяц : интеджер
Бегин
Дни=0
Месяц=0
Пока месяц меньше 6 делать
(
если месяц==1
дни=дни+31
если месяц ==2
Дни=дни+28
Если месяц==3
Дни=дни+31
Если месяц ==4
Дни=дни+30
Если месяц ==5
Дни =дни+31
Месяц=месяц+1
)
Принтлн "количество дней" дни
Енд
kapriz_ugansk
не "принтлн", а "врайтлн" или просто "врайт"
kapriz_ugansk
и не ==, а :=
Светлана Булаева
и вообще частично согласен, вместо = в выражениях надо :=
Вместо == в операторе иф надо =
Но это уже детали, автор если захочет - разберется.
Вместо == в операторе иф надо =
Но это уже детали, автор если захочет - разберется.
А на питоне можно?
Похожие вопросы
- Помогите советами, создать программу, которая будет определять психическое состояние человека
- Напишите программу, которая в последовательности целых чисел определяет их количество и сумма четных чисел
- Помогите пожалуйста нужно написать программу в паскале.
- Напишите программу которая с помощью цикла For-NEXT выводит на экран рисунок «Крылья»
- Помогите сделать программы Паскаль!
- Написать диалоговую программу, которая спрашивает у вас: «Какая сегодня дата?»
- Написать диалоговую программу, которая спрашивает у вас: «Какой твой любимый предмет, какую оценку ты по нему имеешь?».
- Помогите если можете с программой
- Помогите с информатикой, составить программу
- Напишите программу, которая вычисляет квадрат наименьшего из четырёх чисел
if m>8 then begin
writeln ('Лето текущего года уже прошло.');
write ('Вы хотите посчитать количество дней до лета следующего года? Для ответа "Да" введите цифру 1, для ответа "Нет" - цифру 2: ');
readln (tny);
if (tny<>0) and (tny<>1) then write ('Ошибка: неправильно введены данные. Программа завершена. Для повторения попытки перезапустите программу.') else
if b=1 then begin
if m=9 then d:=30-ch+5*31+2*30+28;
if m=10 then d:=31-ch+4*31+2*30+28;
if m=11 then d:=30-ch+4*31+30+28;
if m=12 then d:=31-ch+3*31+30+28;
end else begin
Опять места не хватает - последний кусок см. далее.
write ('Следующий год будет високосным? Для ответа "Да" введите цифру 1, для ответа "Нет" - цифру 2: ');
readln (bny);
if (m=9) and (bny=0) then d:=30-ch+5*31+2*30+28;
if (m=9) and (bny=1) then d:=30-ch+5*31+2*30+29;
if (m=10) and (bny=0) then d:=31-ch+4*31+2*30+28;
if (m=10) and (bny=1) then d:=31-ch+4*31+2*30+29;
if (m=11) and (bny=0) then d:=30-ch+4*31+30+28;
if (m=11) and (bny=1) then d:=30-ch+4*31+30+29;
if (m=12) and (bny=0) then d:=31-ch+3*31+30+28;
if (m=12) and (bny=1) then d:=31-ch+3*31+30+29;
end;
end;
end;
end;
end;
end;
Блин, последние 3 строчки не помещаются...
readkey;
end.
Вот - теперь всё. Можно было, конечно, сделать и проще (поменьше текста), и лучше (ещё добавить метки, но текст увеличится), но, я считаю, что этот вариант - оптимальный.