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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2011, 20:30   #1
PascalABC
Пользователь
 
Регистрация: 30.10.2011
Сообщений: 11
Восклицание Дополнить нужно небольшое условие в задачу

Есть задача:
Код:
program Z9C;
uses crt;
var d,m:integer;
a:string;
begin
Write('Введите число: '); read(d);
Write('Введите месяц: '); read(m);
case m of
1:a:='Января';
2:a:='Февраля';
3:a:='Марта';
4:a:='Апреля';
5:a:='Мая';
6:a:='Июня';
7:a:='Июля';
8:a:='Августа';
9:a:='Сентября';
10:a:='Октября';
11:a:='Ноября';
12:a:='Декабря';
end;
if (d<1) or (d>31) or (m<1) or (m>12) then write('Идите в первый класс и учите календарь') else
Writeln('Сегодня ', d,' ',a);
Writeln('Завтра будет ', d+1,' ',a);
end.
Дополнить нужно что в феврале не может быть 30 и 31,
Нужно учитывать количество дней в каждом месяце, чтобы например вводишь 31 октября, а оно тебе выдало 1 ноября (вместо 32 октября)

Последний раз редактировалось Stilet; 30.10.2011 в 22:05.
PascalABC вне форума Ответить с цитированием
Старый 30.10.2011, 20:40   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Во-первых, а где, простите, год? У нас в разные годы немного разный календарь, вообще-то.

Во-вторых, где заполняете a, там и заполняйте переменную maxDays. При выводе дня будет отдельная проверка на d=maxDays.
Abstraction вне форума Ответить с цитированием
Старый 30.10.2011, 20:45   #3
PascalABC
Пользователь
 
Регистрация: 30.10.2011
Сообщений: 11
По умолчанию

Abstraction
Забыл сказать что за пример взят не високосный год
PascalABC вне форума Ответить с цитированием
Старый 30.10.2011, 22:00   #4
PascalABC
Пользователь
 
Регистрация: 30.10.2011
Сообщений: 11
По умолчанию

Доперло:
Код:
Program case9;
uses crt;
var d,m:integer;
begin
Write ('Введите число: '); read (d);
Write ('Введите месяц: ');read (m);
if (m>12) or (d>31) or (m<1) or (d<1) then writeln('Че такое ввел?') else
case d of
1..27:begin d:=d+1; writeln('Завтра будет: ',d,' число ', m,' месяца'); end;
28: begin If m=2 then begin
inc(m);
writeln('Завтра будет: ',1,' число ', m,' месяца');
end;
end;
29: begin d:=d+1; writeln(d,' число ', m,' месяца');end;
30: begin If ((m=1) or (m=3) or (m=5) or (m=7) or (m=8) or(m=10) or (m=12)) then begin
inc(d);
writeln('Завтра будет: ',d,' число ', m,' месяца');
end else begin writeln('Завтра будет: ',1,' число ', m+1,' месяца');
end;
end;
31: begin If m=12 then begin Writeln('Завтра будет 1 число Нового года'); end;
If ((m=1) or (m=3) or (m=5) or (m=7) or (m=8) or (m=10)) then
begin
inc(m);
Write('Завтра будет: ', 1,' число ', m,' месяца');
end;
end;
end;
end.

Последний раз редактировалось Stilet; 30.10.2011 в 22:08.
PascalABC вне форума Ответить с цитированием
Старый 30.10.2011, 22:45   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Ваше решение, мягко говоря, "не айс"!

посмотрите мой вариант решения аналогичной задачи в теме:
Определение даты через 2 дня

p.s. кстати, дополнить решение так, чтобы оно работало в любой год (учитывался факт високосности года) - дело буквально пары строчек кода.. ну, разумеется, при этом потребуется ввод не только числа и месяца, но и года..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.10.2011, 23:33   #6
PascalABC
Пользователь
 
Регистрация: 30.10.2011
Сообщений: 11
По умолчанию

Serge_Bliznykov
нужно через case
PascalABC вне форума Ответить с цитированием
Старый 30.10.2011, 23:44   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
нужно через case
да ради Бога! через case, так через case!


Да. маленькое замечание по коду.
Учтите, что Ваша программа не проверяет входные данные на корректность.
проверьте, что будет, если ввести 30 февраля или 31 февраля, или 31 апреля и т.д...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно дополнить скрипт moshkin_ura JavaScript, Ajax 7 16.08.2011 19:47
Нужно точное условие задачи. vanyasmart Помощь студентам 7 07.12.2010 00:32
Помогите дополнить задачу Driver_09 Помощь студентам 4 23.12.2009 18:33
Помогите вникнуть в условие задачи. Что нужно сделать garald50 Паскаль, Turbo Pascal, PascalABC.NET 3 04.06.2008 19:42