Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zliczanie miesięcy i dni

Ostatnio zmodyfikowano 2015-11-30 11:02
Autor Wiadomość
Opsowns
Temat założony przez niniejszego użytkownika
Zliczanie miesięcy i dni
» 2015-11-29 21:15:31
Witam mam zrobić tak że jak dodam do aktualnego miesiąca i dnia liczby to przeskoczy na następny itd problem jest w tym że działa tylko w połowie bo jak sobie wezmę np +70 to program już nie wypisze dni czy też miesięcy.

C/C++
int Date::ilosc;
Date Date::_default( 1, 1, 1992 );
Date::Date( int a, int b, int c )
{
    ilosc++;
    if( a > 0 && a <= 31 ) day = a;
    else day = 1;
   
    if( b > 0 && b <= 12 ) month = b;
    else month = 1;
   
    if( c > 0 ) year = c;
    else year = 1900;
   
}


Date::~Date( void )
{
    ilosc--;
}

Date::Date( const Date & d )
{
    ilosc++;
    day = d.day;
    month = d.month;
    year = d.year;
}

void Date::display( char * nazwa ) {
    string month1;
    switch( month )
    {
    case 1:
        month1 = "styczen";
        break;
    case 2:
        month1 = "luty";
        break;
    case 3:
        month1 = "marzec";
        break;
    case 4:
        month1 = "kwiecien";
        break;
    case 5:
        month1 = "Maj";
        break;
       
    case 6:
        month1 = "Czerwiec";
        break;
       
    case 7:
        month1 = "Lipiec";
        break;
       
    case 8:
        month1 = "Sierpien";
        break;
       
    case 9:
        month1 = "Wrzesien";
        break;
       
    case 10:
        month1 = "Pazdziernik";
        break;
       
    case 11:
        month1 = "Listopad";
        break;
       
    case 12:
        month1 = "Grudzien";
        break;
       
    }
    cout << nazwa << ": " << day << "." << month1.c_str() << "." << year << endl << endl; // d1: 1.1.2005
   
}
Date & Date::addDay( int ile )
{
    for( day; day <= 31; day++ )
         this->day = this->day + ile;
   
    if( this->day >= 31 )
    {
        this->day -= 32;
    }
   
    return * this;
}
Date & Date::addYear( int ile )
{
    this->year = year + ile;
    return * this;
   
}

Date & Date::addMonth( int ile )
{
    this->month = month + ile;
    if( this->month >= 12 && this->day >= 1 )
    {
        this->month -= 12;
    }
    return * this;
}
Date & Date::addDate( const Date & d )
{
    this->day += d.day;
    this->year += d.year;
    this->month += d.month;
   
    return * this;
}
P-141127
darko202
» 2015-11-30 11:02:37
1.
niestety pokazałeś fragment kodu, do którego trudno się odnieść

2.
na podstawie zaprezentowanego konstruktora
i metody addDay
C/C++
Date::Date( const Date & d )
{
    ilosc++;
    day = d.day;
    month = d.month;
    year = d.year;
}
.....
Date & Date::addDay( int ile )
{
    // mamy day = 25  , ile 70
    for( day; day <= 31; day++ )
         this->day = this->day + ile; // tu zwiększam raz
    // mamy day = 95
   
   
    if( this->day >= 31 ) // to zmniejszam
    {
        this->day -= 32;
        // day = 31 
    }
   
    return * this; //koniec day = 31
}

na przykładzie widać gdzie jest źle


3.
 zapoznaj się z techniką debugowania kodu
poszukaj np.
https://www.google.pl/​?gws_rd=ssl#q=debugging%20c%2B%2B
P-141157
« 1 »
  Strona 1 z 1