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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ALEXKIRNAS
10 / 10 / 2
Регистрация: 27.06.2013
Сообщений: 151
#1

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

20.07.2013, 16:02. Просмотров 705. Ответов 4
Метки нет (Все метки)

Имеется задача:

Два одноклассника Петя и Вася родились не ранее 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++
C++ Решение задачи
C++ Решение задачи
Решение задачи C++
C++ Решение задачи
Проверить решение задачи C++
Проверить решение задачи C++
Решение задачи C++
C++ Придумал решение определения простого числа. Нету формулы попроще ?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
20.07.2013, 19:01     Решение задачи определения разницы возрастов #2
попробуйте в отладчике пройти каждую строчку программы. и после каждого шага проверяйте значения переменных
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
20.07.2013, 19:06     Решение задачи определения разницы возрастов #3
Цитата Сообщение от ALEXKIRNAS Посмотреть сообщение
Помогите найти ошибку или привидите пример на котором программа дает неверный ответ!!!!!
то есть ты сам даже не знаешь, верный ответ даёт программа или неверный? И в каких примерах даёт? С чего тогда ты взял, что есть ошибка?
Dani
1270 / 628 / 53
Регистрация: 11.08.2011
Сообщений: 2,254
Записей в блоге: 2
Завершенные тесты: 1
20.07.2013, 19:29     Решение задачи определения разницы возрастов #4
Kuzia domovenok, он отправил эту задачу на онлайн-тестирующей системе и, по ходу, получил Wrong Answer (значит неверный ответ выдала его программа).

Добавлено через 7 секунд
и тест не предоставляется, на котором слетела его программа.
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     Решение задачи определения разницы возрастов
Ответ Создать тему
Опции темы

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