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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2017, 18:17   #1
Dovbaka
Новичок
Джуниор
 
Регистрация: 22.05.2017
Сообщений: 2
По умолчанию Acmp задача

Условие задачи 490:Два одноклассника Петя и Вася родились не ранее 1993 и не позднее 1994 года, причем, Петя старше Васи.

Напишите программу, которая по заданным дням рождения определяет: на сколько дней Петя старше Васи.

Заметим, что 1993 и 1994 года не являются високосными, т.е. в феврале в них ровно 28 дней.
Проходит только 4 теста, но почему???

Код:
Var d1,d2: 1..31;
    m1,m2: 1..12;
    y1,y2: 90..100;
    s,c: string;
    k,l,m,n,i,o,j: byte;
    a: array [1..8] of byte;
    
 
begin
    readln(s);
    readln(c);
 
    o:=length(s); 
    i := 1;
    for j := 1 to o do
        if s[j] <> '.' then begin
        if s[j] <> ' ' then begin
            a[i] := ord(s[j]) - ord('0');
            i := i + 1
        end;
        end;
 
    d1 := 10 * a[1] + a[2];
    m1 := 10 * a[3] + a[4];
    y1 := 10 * a[5] + a[6];
    //--------------------------------------------
        o:=length(c);
 
    i := 1;
    for j := 1 to o do
        if c[j] <> '.' then begin
        if c[j] <> ' ' then begin
            a[i] := ord(c[j]) - ord('0');
            i := i + 1
        end;
        end;
 
    d2 := 10 * a[1] + a[2];
    m2 := 10 * a[3] + a[4];
    y2 := 10 * a[5] + a[6];
    //--------------------------------------------
    d1:=d1+(y1*365);
    m1:=m1-1;
    d2:=d2+(y2*365);
    m2:=m2-1;
    for i:=1 to m1 do
    begin
        case (i)of
            1,3,5,7,8,10,12: d1:=d1+31;
            2: d1:=d1+28;
            4,6,9,11: d1:=d1+30;
        end;
    end;
    for i:=1 to m2 do
    begin
        case (i)of
            1,3,5,7,8,10,12: d2:=d2+31;
            2: d2:=d2+28;
            4,6,9,11: d2:=d2+30;
        end;
    end;
    writeln(d2-d1);
    
end.

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 22.05.2017 в 19:19.
Dovbaka вне форума Ответить с цитированием
Старый 22.05.2017, 19:29   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

попробуйте для
Код:
   s:='01.01.93';
   c:='01.01.94';
условие задачи желательно указывать полностью. с описанием входных/выходных данных ACMP.RU #490 Дни рождения:
Цитата:
Код:
Входные данные

Входной файл INPUT.TXT содержит дату рождения Пети в первой строке и дату рождения Васи во второй. 
Даты заданы в формате «ДД.ММ.ГГ», 
например, строка 06.02.93 означает дату рождения 6 февраля 1993 года.

Выходные данные

В выходной файл OUTPUT.TXT выведите единственное число – искомое количество дней.

Примеры

№	INPUT.TXT	OUTPUT.TXT
1	01.01.93
	02.01.93		1

2	05.02.94
	05.03.94		28
p.s. а зачем так сложно - я бы просто в цикле суммировал число дней, пока месяцы и годы не совпадут.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.05.2017, 19:51   #3
Dovbaka
Новичок
Джуниор
 
Регистрация: 22.05.2017
Сообщений: 2
По умолчанию

Ошибка оказалась простой. Нужно было поднести к модулю abs (
Dovbaka вне форума Ответить с цитированием
Старый 22.05.2017, 20:16   #4
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

компилятор то какой?

первую часть можно сделать так:
Код:
  
var d1,m1,y1,d2,m2,y2,e:integer;
    s,c: string;
begin
  readln(s);
  Val(copy(s,1,2),d1,e);
  Val(copy(s,4,2),m1,e);
  Val(copy(s,7,2),y1,e);

  readln(c);
  Val(copy(c,1,2),d2,e);
  Val(copy(c,4,2),m2,e);
  Val(copy(c,7,2),y2,e);
end.
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 23.05.2017, 00:09   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Plague Посмотреть сообщение
компилятор то какой?
если не ошибаюсь, то на ACMP.RU для компиляции кода на Паскаль используется компилятор Delphi.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.05.2017, 07:56   #6
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
для компиляции кода на Паскаль используется компилятор Delphi.
Используются FreePascal, Delphi и PascalABC.NET.
Есть функции для работы с датой и временем, можно через них решить задачу. Будет на много короче код.
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача с acmp, сортировка по алфавиту Heirat Паскаль, Turbo Pascal, PascalABC.NET 3 13.02.2016 18:12
Задача на графы : "Автобусы" с acmp.ru Poma][a Помощь студентам 26 21.07.2014 18:34
Stack overflow (C++) (Задача с acmp №9) Ghost3 Помощь студентам 4 15.04.2013 18:41
Олимпиадная задача "Золото племени АББА" на Pascal (№7 с acmp.ru) Ghost3 Помощь студентам 19 17.01.2013 21:04
Задача "Лампочки" на Pascal (№337 с acmp.ru) Ghost3 Помощь студентам 18 01.11.2012 14:10