Форум программистов, компьютерный форум CyberForum.ru

Решение задачи определения разницы возрастов - C++

Восстановить пароль Регистрация
 
ALEXKIRNAS
10 / 10 / 2
Регистрация: 27.06.2013
Сообщений: 151
20.07.2013, 16:02     Решение задачи определения разницы возрастов #1
Имеется задача:

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

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

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

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

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

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

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

Имеется решение:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>;
#include <iostream>;
 
int main ()
{
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    char a[9], b[9];
    std::cin >> a >> b;
    short d1, d2, m1, m2, y1, y2, r=0, d;
    d1=( *a-48 )*10 + *(a+1)-48;
    d2=( *b-48 )*10 + *(b+1)-48;
    m1=( *(a+3)-48 )*10 + *(a+4)-48;
    m2=( *(b+3)-48 )*10 + *(b+4)-48;
    y1=( *(a+7)-48 );
    y2=( *(b+7)-48 );
    if(y1==y2 && m1==m2) r=d2-d1;
    else 
    {
        while(y1!=y2 || m1!=m2)
        {
            if(m1==2) d=28;
            else if(m1==4 || m1==6 || m1==9 || m1==11) d=30;
            else d=31;
            if(!r) r=d-d1;
            else r+=d;
            m1++;
            if(m1==13) { m1=1; y1++; }
        }
        r+=d2;
    }
    std::cout << r;
}
Помогите найти ошибку или привидите пример на котором программа дает неверный ответ!!!!! HELP!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2013, 16:02     Решение задачи определения разницы возрастов
Посмотрите здесь:

Решение задачи C++
Решение задачи C++
Решение задачи c++ C++
C++ Решение задачи
C++ Решение задачи
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
20.07.2013, 19:01     Решение задачи определения разницы возрастов #2
попробуйте в отладчике пройти каждую строчку программы. и после каждого шага проверяйте значения переменных
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
20.07.2013, 19:06     Решение задачи определения разницы возрастов #3
Цитата Сообщение от ALEXKIRNAS Посмотреть сообщение
Помогите найти ошибку или привидите пример на котором программа дает неверный ответ!!!!!
то есть ты сам даже не знаешь, верный ответ даёт программа или неверный? И в каких примерах даёт? С чего тогда ты взял, что есть ошибка?
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
20.07.2013, 19:29     Решение задачи определения разницы возрастов #4
Kuzia domovenok, он отправил эту задачу на онлайн-тестирующей системе и, по ходу, получил Wrong Answer (значит неверный ответ выдала его программа).

Добавлено через 7 секунд
и тест не предоставляется, на котором слетела его программа.
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
21.07.2013, 18:27     Решение задачи определения разницы возрастов #5
уже решал. Некоторые заголовки можешь спилить для красоты.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
#include <bitset>
#include <set>
#include <stack>
#include <iomanip> 
#include <map>
#include <sstream>
 
using namespace std;
 
const int days_in_month[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
 
int main() {
    freopen ("input.txt", "rt", stdin);
    freopen ("output.txt", "wt", stdout);
    int d1, m1, g1;
    int d2, m2, g2;
    char ch;
    scanf("%d%c%d%c%d", &d1, &ch, &m1, &ch, &g1);
    scanf("%d%c%d%c%d", &d2, &ch, &m2, &ch, &g2);
    int ans = 0;
    while (d1 != d2 || m1 != m2 || g1 != g2) {
        ++d1;
        ++ans;
        if (d1 > days_in_month[m1-1]) {
            ++m1;
            d1 = 1;
            if (m1 > 12) {
                m1 = 1;
                ++g1;
            }
        }
    }
    cout << ans;
    return 0; 
}
Yandex
Объявления
21.07.2013, 18:27     Решение задачи определения разницы возрастов
Ответ Создать тему
Опции темы

Текущее время: 03:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru