Skript SChaltjarh <- Erklärung

Dolphon

Erfahrenes Mitglied
Moin,
wir haben in der Berufschule die Standart Aufgabe gestellt bekommen, ein Programm zu schreiben, dass uns sagt, welches Jahr ein Schaltjar ist.
Im Netz habe ich nun ein Programm gefunden, und abgeändert, damit es bei mir lief.
Allerdings verstehe ich eine Zeile nicht.
Diese Zeile ist markiert im Code:

Code:
//---------------------------------------------------------------------------
#include <iostream>
#include <conio.h>
#include <stdio.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
   int jahreszahl,schaltjahr;

schaltjahr = 0;
printf("Bitte Jahreszahl eingeben:");
scanf("%i", &jahreszahl);

if ( jahreszahl % 4 == 0 )
{
schaltjahr = 1;
if ( jahreszahl % 100 == 0 )
{
schaltjahr = 0;
if ( jahreszahl % 400 == 0 )
{
schaltjahr = 1;
}
}
}

if ( schaltjahr ) // <- Was ist das denn für eine Bedingung. 
{
printf("\nSchaltjahr: Ja");
}
else
{
printf("\nSchaltjahr: Nein");
}
getch();
return 0;
}
 
Das ist eine Bedingung mit einer Boolschen Variable, aber so wie es angewendet ist, ist das eigentlich nicht richtig.
1. schaltjahr müsste folgendermaßen deklariert werden:
Code:
bool schaltjahr
Die zuweisung ist ansich nicht falsch jedoch mit 1 = true, und 0 = false besser.
if(schaltjahr) ist gleichbedeutend mit if(schaltjahr == true)
das gegenteil ist dann if(!schaltjahr) und if(schaltjahr == false)

Also kommplett umgeändert:
Code:
//---------------------------------------------------------------------------
#include <iostream>
#include <conio.h>
#include <stdio.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
   int jahreszahl;
   bool schaltjahr;

schaltjahr = false;
printf("Bitte Jahreszahl eingeben:");
scanf("%i", &jahreszahl);

if ( jahreszahl % 4 == 0 )
{
schaltjahr = true;
if ( jahreszahl % 100 == 0 )
{
schaltjahr = false;
if ( jahreszahl % 400 == 0 )
{
schaltjahr = true;
}
}
}

if ( schaltjahr ) // <- Was ist das denn für eine Bedingung. 
{
printf("\nSchaltjahr: Ja");
}
else
{
printf("\nSchaltjahr: Nein");
}
getch();
return 0;
gruß Philip
 
Moin,
gl4di4t0r hat gesagt.:
Das ist eine Bedingung mit einer Boolschen Variable, aber so wie es angewendet ist, ist das eigentlich nicht richtig.

Sorry aber da muss ich dir teilweise wiedersprechen. "if" reagiert zwar nach boolscher Algebra (wahr oder falsch), aber nur die "0" ist wirklich definiert als 0x00000000. sobald da was anderes steht ist die Bedingung if(testmichdoch) erfüllt. Es ist also egal ob man in Schaltjahr ne 1 oder das Jahr selbst einträgt. "if" stellt so eine erweiterung der Boolschen Algebra bereit, und damit ist der original Code von Dolphon 100% richtig.

Gruss Michael
 
Zurück