Funkcja zwraca błędną wartość

Funkcja zwraca błędną wartość
M0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 373
0

Witam,

Mam o to taką funkcje

Kopiuj
int MaksymalnyDzienMiesiaca( int DanaMiesiac , int DanaRok )

// Za DanaMiesiac podaje się numer miesiąca, a za DanaRok podaje się Rok

{


    if ( DanaMiesiac == 2 )
        if ( ( DanaRok % 4 == 0 && DanaRok % 100 != 0 ) || DanaRok%400 == 0 )
            return 29 ;
            else
            return  28;

    if ( ( DanaMiesiac == 4 ) || ( DanaMiesiac == 6 ) || ( DanaMiesiac == 9 ) || ( DanaMiesiac == 11 ) )
        return 30;

    if ( ( DanaMiesiac == 1 ) || ( DanaMiesiac == 3 ) || ( DanaMiesiac == 5 ) || ( DanaMiesiac == 7 ) || ( DanaMiesiac == 8 ) || ( DanaMiesiac == 10 ) || ( DanaMiesiac == 12 ) )
        return 31;

}

Funkcja ma zwrócić długość miesiąca, czyli od 28 do 31. Jednak funkcja zwraca 1973817178.
Jezeli dam np

Kopiuj
  

int Wynik

// kawałek funkcji

Wynik = 29 ; 

//Dalej kawałek fukcji

return Wynik;

Funkcja zwraca 0. Możecie mi powiedzieć gdzie popełniłem błąd?

PS:
Wszystkim życze wesołym świąt.

MB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 45
0
Kopiuj
#include <iostream>
#include <string>
using namespace std;

int MaksymalnyDzienMiesiaca( int DanaMiesiac , int DanaRok ) {
    if ( DanaMiesiac == 2 )
        if ( ( DanaRok % 4 == 0 && DanaRok % 100 != 0 ) || DanaRok%400 == 0 )
            return 29 ;
            else
            return  28;
    else if ( ( DanaMiesiac == 4 ) || ( DanaMiesiac == 6 ) || ( DanaMiesiac == 9 ) || ( DanaMiesiac == 11 ) )
        return 30;

    else if ( ( DanaMiesiac == 1 ) || ( DanaMiesiac == 3 ) || ( DanaMiesiac == 5 ) || ( DanaMiesiac == 7 ) || ( DanaMiesiac == 8 ) || ( DanaMiesiac == 10 ) || ( DanaMiesiac == 12 ) )
        return 31;
}

int main() {
    cout << MaksymalnyDzienMiesiaca(2,1999) << endl;

    return 0;

}

Kiedy zwraca Ci taka liczbę ?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1

"... gdzie popełniłem błąd?": - błąd jest w próbie rozwiązania problemu bez użycia TBrain

Kopiuj
int MaksymalnyDzienMiesiaca(int DanaMiesiac,int DanaRok)
  {
   static int sz[]={31,28,31,30,31,30,31,31,30,31,30,31};
   return sz[DanaMiesiac-1]+((DanaMiesiac==2)&&((DanaRok% 4==0)&&((DanaRok%100!= 0)||(DanaRok%400==0))));
  }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.