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

Расчет длительности в днях промежутка времени между двумя датами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ структуры http://www.cyberforum.ru/cpp-beginners/thread176173.html
задание: 1)Написать структуру Train, содержащую следующие поля: название пункта назначения номер поезда время отправления 2) ввод с клавиатуры данных в массив, состоящий из шести элементов...
C++ scanf. Разбиение. Помогите с задачей. Не могу додуматься как это сделать: С клавиатуры вводится следующий набор символов: AGENT007:1234567.25 В программе определены три переменные: типов int i, long l и float f.... http://www.cyberforum.ru/cpp-beginners/thread176171.html
C++ Не получается обнаружить ошибку(метод Шелла)
Проблема в том что я написала программу на паскале,а преподаватель попросил перевести на си,и теперь не могу понять где эта ошибка,выводит не тот результат,я даже по шагово проделывала,где то...
C++ Утечка памяти в работе с классами
вроде утечка памяти наблюдается в функции "loadfromfile", помогите пожалуйста исправить #include "stdafx.h" #include <windows.h> #include <stdlib.h> #include <iostream> using namespace std;
C++ Ввести имена и телефоны сотрудников организации в массив записей и вывести их в виде таблицы. http://www.cyberforum.ru/cpp-beginners/thread176156.html
Запись содержит несколько компонентов, или полей, которые могут иметь различные типы. Синтаксис: Record Поля; Поля; ... Поля End; Замечания:
C++ одномерные массивы Помогите, пожалуйста, сделать задание, ну хотя бы намекните! В одномерном массиве, который состоит из n действительных чисел, найти сумму элементов между первым и последним нулевыми элементами. В... подробнее

Показать сообщение отдельно
Tachilka
3 / 3 / 0
Регистрация: 13.10.2010
Сообщений: 17
05.11.2010, 16:21  [ТС]
Всем привет еще раз...Очень нужна Ваша помощь! Я тут вот изменил кое-что... Уже подсчет идет лучше, без тайма... Но почему-то при вводе например 0001 года,все равно делает ошибку в расчетах... Помогите пожалуйста найти и исправить эту ошибку... и второй вопрос, как можно и куда вбить месяцы словами?? Пока не додумался... Вот переделанная прога...
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
int daymes[]={31,28,31,30,31,30,31,31,30,31,30,31};
int getDney(int day, int mes, int year)
{
    int day1; 
    day1=365*(year-1);
    day1=day1+((year-1)/4)-((year-1)/100)+((year-1)/400);
    for(int i=0; i<mes-1; i++)
        day1+=daymes[i];
    day1+=day;
    if (mes>2)
    {
        if (year%4==0) day1++;
        if (year%100==0) day1--;
        if (year%400==0) day1++;
    }
    return day1;
}
int ask_error(const char * msg)
{
    char answ;
    printf("%s\nContinue? (y/n) > ", msg);
    if (scanf("%c%*c", &answ) != 1)
    {
        perror("scanf");
        return 1;
    }
    return (answ != 'y' && answ != 'Y');
}
 
int check_date(struct tm *d)
{
    if (d->tm_mday < 1 || d->tm_mday > 31)
        return 1;
    d->tm_mon -= 1;
    if (d->tm_mon < 0 || d->tm_mon > 11)
        return 1;
    if (d->tm_year < 0)
        return 1;
    if (d->tm_year < 37)
        d->tm_year += 2000;
    else if (d->tm_year < 100)
        d->tm_year += 1900;
    d->tm_year -= 1900;
    d->tm_min = 1;
    return 0;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    int a,b;
    struct tm date1, date2;
    time_t time1, time2;
    
    while ( 1 )
    {
        memset(&date1, 0, sizeof(struct tm));
        memset(&date2, 0, sizeof(struct tm));
        printf("\nFirst date: ");
        if (scanf("%d%*c%d%*c%d%*c", &date1.tm_mday, &date1.tm_mon, &date1.tm_year) != 3)
        {
            if (ask_error("Wrong input!"))
                break;
            continue;
        }
        if (check_date(&date1))
        {
            if (ask_error("Wrong date format!"))
                break;
            continue;
        }        
        printf("Second date: ");
        if (scanf("%d%*c%d%*c%d%*c", &date2.tm_mday, &date2.tm_mon, &date2.tm_year) != 3 )
        {
            if (ask_error("Wrong input!"))
                break;
            continue;
        }
        if (check_date(&date2))
        {
            if (ask_error("Wrong date format!"))
                break;
            continue;
        }
    a=getDney(date1.tm_mday,date1.tm_mon,date1.tm_year);
    b=getDney(date2.tm_mday,date2.tm_mon,date2.tm_year);
    printf("Days between: %d\n",b-a );
        if ( ask_error("") )
            break;
    }
    exit(0);
    return 0;
}
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru