![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
NightPaladin |
![]() ![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 67 Пол: Мужской Репутация: ![]() ![]() ![]() |
Надо учитывать только то, что месяцы по 30 и 31 дню, высокосным годом и 29 днями февраля.
У Васи Пупкина неожиданно сломался компьютер. Из-за отсутствия нужных материалов на ремонт понадобится N дней. Определите дату окончания ремонта, если известно, что компьютер сломался в текущем году, и ремонт должен закончиться тоже в этом году. Известна дата поломки в формате ДД.ММ и количество дней ремонта N. Получить дату окончания ремонта в формате: ДД.ММ. Пример: Входные данные: Выходные данные: 01.06 30 01.07 Вот мои наброски она вечно касячит, т.е найдётся такое число при котором она выдаст не тот ответ - помогите пожалуйста Код program asd; Uses Crt; const n = 100; m = 1000; var mas: array[1..n] of String; mas2: array[1..m] of Integer; date: String; count,w,q,e,r,day,k,i: Integer; pr,od: byte; begin ClrScr; WriteLn('Input date:'); Readln(date); WriteLn('Input day:'); Readln(day); For count:= 1 to Length(date) do mas[count]:=Copy(date,count,1); mas[1]:=mas[1]+mas[2]; For count:= 2 to Length(date) do mas[count]:= mas[count+1]; Val(mas[1],q,w); mas2[1]:=q; mas[3]:=mas[3]+mas[4]; For count:=4 to Length(date)-1 do mas[count]:=mas[count+1]; Val(mas[3],e,r); mas2[2]:= e; Case e of 1,3,5,7,9,11: k:=31; 4,6,8,10,12: k:=30; 2: k:=30; end; If day+q > k then begin i:=(day+q) div k; mas2[2]:=e+i; day:=day-(k-q); If For count:= e+1 to mas2[2] do begin If NOT Odd(count) = true then day:=day - 30; Writeln(day); If Odd(count) = true then day:= day - 31; end; For count:=1 to pr do day:= day-30; For count:=1 to od do day:= day-31; end;{ else day:=day+q; If day = 0 then day:=1; Writeln(day,'.',mas2[2]);} ReadKey; end. Все исходники должны помещаться в теги [ CODE] [ /CODE] Сообщение отредактировано: volvo - 27.11.2004 16:53 -------------------- На горе лежит дискета
У неё испорчен boot Через дырочку в конверте Её вирусы грызут |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
NightPaladin
Если это еще нужно, я набросал кое-что, погоняй эту программу. Найдешь баги - говори ;) Код Function GetInteger(s: String): Integer; Var i, Err: Integer; Begin If s[1] = '0' Then Delete(s, 1, 1); Val(s, i, Err); GetInteger := i End; Const CurrYear = 2004; DayInMonth: Array[1 .. 12] Of Byte = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); (* { Тестировалось с этими данными } Const Repair: Integer = 50; st: String = '21.06'; *) Var Day, Month, DaysBefore: Integer; p, i: Byte; Var Repair: Integer; st: String; begin Inc(DayInMonth[2], Byte((CurrYear mod 4) = 0)); Write('Дата поломки > '); ReadLn(st); Write('Длительность ремонта > '); ReadLn(Repair); p := Pos('.', st); Day := GetInteger( Copy(st, 1, Pred(p)) ); Month := GetInteger( Copy(st, Succ(p), Length(st)-p) ); For i := 1 To Pred(Month) Do Inc(DaysBefore, DayInMonth[i]); Inc(DaysBefore, Day); Inc(DaysBefore, Repair); i := 1; While DaysBefore > DayInMonth[i] Do Begin Dec(DaysBefore, DayInMonth[i]); Inc(i) End; WriteLn('Ремонт закончится: ', DaysBefore, '.', i); end. |
NightPaladin |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 67 Пол: Мужской Репутация: ![]() ![]() ![]() |
Насчёт тегово спосибо учту.
![]() ![]() Безмерно благодарен. -------------------- На горе лежит дискета
У неё испорчен boot Через дырочку в конверте Её вирусы грызут |
BUGerKola |
![]()
Сообщение
#4
|
|||
Гость ![]() |
volvo
мне нужно без вызова функций. Простым тупым языком +)) мы такого ещё не проходили и я мало во что врубляю в твоих записях. Если можно попроще как-нибудь просто определить дату следующего дня и квартал.при помощи того же перечисляемого типа.
|
|||
BUGerKola |
![]()
Сообщение
#5
|
|||
Гость ![]() |
ты мне скажи, вообще можно как нить это без функций сделать?
|
|||
BUGerKola |
![]()
Сообщение
#6
|
Гость ![]() |
извиняйте, но или я не врубаюсь в код, или программа совсем не то считает что мне нужно. И как её подправить под себя я не пойму. Там совсем другое считает.
Мне нужно ввести сегоднящнюю дату, и чтоб прога вывела дату следующего дня и квартал а тут что-то другое |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Цитата или я не врубаюсь в код Скорее всего... На запрос "Дата поломки" введи сегодняшнюю дату, "Длительность ремонта" введи 1 день... (Не забудь про CurrYear - сейчас уже 2005)... Получишь дату следующего дня. По месяцу определить квартал не должно быть проблемой... |
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 23:38 |