Домашние задания: Информатика

Помогите на Pascal сделать программу, которая считает количество дней до лета.

Здравствуйте. Помогите на Pascal сделать программу, которая считает оставшееся количество дней до лета (с вводом дня, месяца с клавиатуры).
Спасибо!
Изучай ( убери " * ") https*://w*ww.cyberfo*rum*.ru/pascal*abc/thread12*65939.*html
Аделя Габайдуллина
Аделя Габайдуллина
17 025
Лучший ответ
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;
Чёрт, места не хватает - продолжение в комментарии к этому ответу. Т. е. просто дальше вставляете/переписываете.
kapriz_ugansk
kapriz_ugansk
43 559
kapriz_ugansk Продолжение:

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

Опять места не хватает - последний кусок см. далее.
kapriz_ugansk Ошибся - ещё не последние:

write ('Следующий год будет високосным? Для ответа "Да" введите цифру 1, для ответа "Нет" - цифру 2: ');
readln (bny);
kapriz_ugansk if (bny<>0) and (bny<>1) then write ('Ошибка: неправильно введены данные. Программа завершена. Для повторения попытки перезапустите программу.') else begin
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 строчки не помещаются...
kapriz_ugansk write ('Дней до лета осталось: ', d);
readkey;
end.

Вот - теперь всё. Можно было, конечно, сделать и проще (поменьше текста), и лучше (ещё добавить метки, но текст увеличится), но, я считаю, что этот вариант - оптимальный.
Вар
Дни : интеджер
Месяц : интеджер

Бегин

Дни=0
Месяц=0
Пока месяц меньше 6 делать
(
если месяц==1
дни=дни+31
если месяц ==2
Дни=дни+28
Если месяц==3
Дни=дни+31
Если месяц ==4
Дни=дни+30
Если месяц ==5
Дни =дни+31
Месяц=месяц+1
)
Принтлн "количество дней" дни
Енд
kapriz_ugansk не "принтлн", а "врайтлн" или просто "врайт"
kapriz_ugansk и не ==, а :=
Светлана Булаева и вообще частично согласен, вместо = в выражениях надо :=
Вместо == в операторе иф надо =
Но это уже детали, автор если захочет - разберется.
А на питоне можно?