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

Подсчет дней между датами, преждевременный выход из цикла - C++

Восстановить пароль Регистрация
 
Александр_Алекс
4 / 1 / 1
Регистрация: 08.12.2013
Сообщений: 136
09.03.2014, 13:08     Подсчет дней между датами, преждевременный выход из цикла #1
Здравствуйте! Делаю программу на С++ для подсчета дней между двумя датами, цикл завершается после первой итерации, условие выхода из цикла не соблюдается.
Вот код:

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
93
94
// Test_Number_of_days.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "iostream"
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int dayCur,monthCur,yearCur; //Peremennue dlya hraneniya tekuwei datu       
    int dayF,monthF,yearF; //Peremennue dlya hraneniya datu mezhdy kotori nyzhno naiti kol-vo dnei
    int numberDays; //Peremennaya dlya hraneniya kol-va dnei
 
    numberDays=0; //nachalnoe znachenie schetchika dnei
 
    dayF=5;
    monthF=4;
    yearF=2014;
 
    dayCur=3;
    monthCur=3;
    yearCur=2014;
 
 
do 
{
 
        if(monthCur==1 || monthCur==3 || monthCur==5 || monthCur==7 || monthCur==8 || monthCur==10 || monthCur==12)//esli v tek. mesyace 31 den'
        {
            do
            {
                cout<<"-";
                numberDays++;
                dayCur++;
 
                if (yearCur == yearF && monthCur == monthF && dayCur == dayF) break; //Esli cikl schitaet dni v poslednem mesyace
            }
            while(dayCur!=31);
        }
        if(monthCur==4 || monthCur==6 || monthCur==9 || monthCur==11) //esli v tek. mesyace 30 dnei
        {
            do
            {
                cout<<"+";
                numberDays++;
                dayCur++;
 
                if (yearCur == yearF && monthCur == monthF && dayCur == dayF) break; //Esli cikl schitaet dni v poslednem mesyace
            }
            while(dayCur != 30);
        }
        
        if(monthCur ==2 ) //esli fevral'
            do
            {
                cout<<"=";
                numberDays++;
                dayCur++;
                if (yearCur == yearF && monthCur == monthF && dayCur == dayF) break; //Esli cikl schitaet dni v poslednem mesyace
            }
            while(dayCur !=28);
 
        if (yearCur == yearF && monthCur == monthF && dayCur == dayF) break; //Vuhod iz osnovnogo cikla
        
        monthCur++; //Sledyjushii mesyac
        dayCur=1; //pervui den'
 
        if(monthCur > 12) // Slesdyushii god
        {
            cout<<"*";
            monthCur=1;
            dayCur=1;
            yearCur++;
        }
    
}
while(dayCur!=dayF && monthCur!=monthF && yearCur != yearF);
 
    cout<<"Kol-vo dney "<< numberDays;
 
 
    /*cout<<"Vvod goda: ";
     cin>>yearCur;
 
    cout<<"Vvod mesyaca: ";
     cin>>monthCur;
    
    cout<<"Vvod dnya: ";
     cin>>dayCur;*/
 
    system("pause");
    return 0;
}
Как видно из кода, условие цикла таково
C++
1
while(dayCur!=dayF && monthCur!=monthF && yearCur != yearF)
но выход из цикла происходит при таких значения переменных(см. вложения). Надеюсь, все свои действия я понятно описал в комментариях.
Заранее спасибо за помощь!
Миниатюры
Подсчет дней между датами, преждевременный выход из цикла  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Александр_Алекс
4 / 1 / 1
Регистрация: 08.12.2013
Сообщений: 136
11.03.2014, 22:21  [ТС]     Подсчет дней между датами, преждевременный выход из цикла #2
Ребят, буду благодарен любому совету!
Александр_Алекс
4 / 1 / 1
Регистрация: 08.12.2013
Сообщений: 136
19.03.2014, 19:00  [ТС]     Подсчет дней между датами, преждевременный выход из цикла #3
Хоть какие-нибудь мысли!
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
19.03.2014, 19:11     Подсчет дней между датами, преждевременный выход из цикла #4
Условие выхода соблюдается. Будьте внимательны.

неважно что
&&
monthCur!=monthF ~ 4 != 4 === false
&&
неажно что
==
false
Александр_Алекс
4 / 1 / 1
Регистрация: 08.12.2013
Сообщений: 136
21.03.2014, 16:15  [ТС]     Подсчет дней между датами, преждевременный выход из цикла #5
Цитата Сообщение от stima Посмотреть сообщение
неважно что
&&
monthCur!=monthF ~ 4 != 4 === false
&&
неажно что
==
false
Не понял, что вы имели в виду. Как я понимаю, цикл будет работать только тогда, когда все три пары переменных будут не равны между собой. А там-то одна пара dayCur!=dayF все еще не равны друг другу, значит цикл должен продолжить работу. Или я неправ?
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
22.03.2014, 04:52     Подсчет дней между датами, преждевременный выход из цикла #6
неправы, Вы не правильно интерпретируете операторы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2014, 05:05     Подсчет дней между датами, преждевременный выход из цикла
Еще ссылки по теме:

Преждевременный выход из цикла C++
C++ Вывести разницу дней между двумя датами
Посчитать количество дней между двумя датами C++

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

Или воспользуйтесь поиском по форуму:
IrineK
Заблокирован
22.03.2014, 05:05     Подсчет дней между датами, преждевременный выход из цикла #7
Подсчет между двумя датами в одном году, или года тоже могут быть разными?
Yandex
Объявления
22.03.2014, 05:05     Подсчет дней между датами, преждевременный выход из цикла
Ответ Создать тему
Опции темы

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