Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
10 / 10 / 1
Регистрация: 27.06.2013
Сообщений: 151
1

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

20.07.2013, 16:02. Просмотров 1875. Ответов 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!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.07.2013, 16:02
Ответы с готовыми решениями:

Функция определения разницы во времени в секундах
В работе потока необходимо соблюсти интервал для срабатывания функции работает поток - собирает...

Программа для определения разницы между максимальным и минимальным корнем ур-я
Доброго времени суток, помогите пожалуйста в написании Программы Matlab: Даны две функции:...

Уменьшение изображения путем разницы + отрисовка этой разницы
Добрый день. требуется получить разницу между изображениями, для передачи это разницы по сети, а...

Найти решение уравнения, изоклинную и интегральную кривые, решение задачи Коши
Помогите пожалуйста! а) Найти решение вида: x=a,y=b,y=kx+b y'=\frac{y^2-4}{xy},\\ y'=x-y+2 б)...

4
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
20.07.2013, 19:01 2
попробуйте в отладчике пройти каждую строчку программы. и после каждого шага проверяйте значения переменных
0
3300 / 2681 / 724
Регистрация: 25.03.2012
Сообщений: 9,683
Записей в блоге: 1
20.07.2013, 19:06 3
Цитата Сообщение от ALEXKIRNAS Посмотреть сообщение
Помогите найти ошибку или привидите пример на котором программа дает неверный ответ!!!!!
то есть ты сам даже не знаешь, верный ответ даёт программа или неверный? И в каких примерах даёт? С чего тогда ты взял, что есть ошибка?
0
1402 / 644 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
20.07.2013, 19:29 4
Kuzia domovenok, он отправил эту задачу на онлайн-тестирующей системе и, по ходу, получил Wrong Answer (значит неверный ответ выдала его программа).

Добавлено через 7 секунд
и тест не предоставляется, на котором слетела его программа.
1
667 / 195 / 29
Регистрация: 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; 
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.07.2013, 18:27

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

задачи с двумерным массивом, решение должно быть похоже на решение 8-ми классника
Без рандома, все вводится с клавиатуры, без Inc, без Break и т.д. 1)Сколько учеников не имеет в...

Аналитическое решение решение краевой задачи для ОДУ второго порядка
Здравствуйте! Задача: Аналитически найти частное решение ОДУ. Изначально в частных производных, но...

Найти общее решение или решение задачи Коши
вот пример:

Сравнение возрастов
Добрый вечер. Прошу вашей помощи. Выполняю такое задание, но не могу понять - как именно ввести...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.