switch-statement vervangen door if-else-statement

Status
Niet open voor verdere reacties.

SETMRC

Gebruiker
Lid geworden
15 feb 2007
Berichten
23
Sorry gasten, ik nog eens ...

dit is mijn code:

#include <iostream>

using namespace std;

bool isSchrikkeljaar( int iJaar );
int iGetAantalDagen( int iMaand, int iJaar);

int main()
{
int iMaand;
int iJaar;

cout << "Maand: ";
cin >> iMaand;

cout << "Jaar: ";
cin >> iJaar;
cin.get();

cout << "Aantal dagen is: " << iGetAantalDagen( iMaand, iJaar ) << endl;
}
bool isSchrikkeljaar( int iJaar )
{
return iJaar % 4 == 0 && iJaar % 100 != 0 ||
iJaar % 400 == 0;
}
int iGetAantalDagen( int iMaand, int iJaar )
{
int iDagen;

if( iMaand == 1 )
iDagen = 31;
cout << iDagen;
if( iMaand == 3 )
iDagen = 31;
cout << iDagen;
if( iMaand == 5 )
iDagen = 31;
cout << iDagen;
if( iMaand == 7 )
iDagen = 31;
cout << iDagen;
if( iMaand == 8 )
iDagen = 31;
cout << iDagen;
if( iMaand == 10 )
iDagen = 31;
cout << iDagen;
if( iMaand == 12 )
iDagen = 31;
cout << iDagen;
if( iMaand == 4 )
iDagen = 30;
cout << iDagen;
if( iMaand == 6 )
iDagen = 30;
cout << iDagen;
if( iMaand == 9 )
iDagen = 30;
cout << iDagen;
if( iMaand == 11 )
iDagen = 30;
cout << iDagen;
if( iMaand == 2 )
{
if( isSchrikkeljaar( iJaar ))
{
iDagen = 29;
cout << iDagen;
}
else
{
iDagen = 30;
cout << iDagen;
}
}
return iDagen;
}


aanvankelijk was de code geschreven met een switch statement , en ik heb deze vervangen door een if-else statement(s). tijdens het debuggen is alles in orde, maar als ik het programma run (eerst geef ik een maand in, dan het jaartal), dan krijg ik volgende fout:




iDagen heb ik toch gedeclareerd??
 
Je moet even { } gaan gebruiken.

if( iMaand == 1 )
{
iDagen = 31;
cout << iDagen;
}

Doe je dit niet, dan probeer je cout << iDagen te schrijven, maar je hebt geen waarde toegekend aan iDagen. Wanneer je initialiseert maak dan de gewoonte om een waarde toe te kennen bv 0;

int iDagen = 0;

Dan was het programma niet gecrashed.
 
bedankt jabber :thumb: zoals je ziet ben ik nogal een newb wat c++ betreft :eek:

het programma werkt nu wel, maar de uitvoer is niet echt wat ik wil, zoals je wel kunt zien:



enig idee hoe ik het eerste getal kan weglaten in de laatste regel??
 
if( iMaand == 1 )
{
iDagen = 31;
cout << iDagen;
}

Moet dan worden:

if( iMaand == 1 )
{
iDagen = 31;
}
 
Is een array gebruiken niet handiger? Als:

iMaanden = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
iDagen = iMaanden[iMaand - 1];
if (iMaand == 2 && isSchrikkeljaar(iJaar)) iDagen = 29;


maar dan in C++ ;)


Vr.Gr. Egel.
 
Is een array gebruiken niet handiger? Als:

iMaanden = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
iDagen = iMaanden[iMaand - 1];
if (iMaand == 2 && isSchrikkeljaar(iJaar)) iDagen = 29;


maar dan in C++ ;)


Vr.Gr. Egel.

Uiteindelijk wel. Maar omdat ik geen held ben in arrays, heb ik het bij de if-else gehouden :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan