Meine Frage:
Hallo,
haben eine Hausaufgabe in der Schule bekommen, wo wir ein Struktogramm gegeben haben und daraus ein Programm zur Schaltjahrberechnung schreiben müssen. Es soll ausgegeben werden ob das Jahr ein Schaltjahr ist oder nicht. Das Struktogramm habt ihr im Anhang.
Hab jetzt natürlich auch schon angefangen bischen zu probieren, komm allerdings jetzt nicht weiter:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#pragma hdrstop
#pragma argsused
int main(void)
{
//lokale Variable
unsigned int jahr;
//Beschreibung
printf ("Programm zur Ausgabe ob ein Jahr ein Schaltjahr ist oder nicht");
//Jahr einlesen
printf ("Jahr eingeben: ");
scanf ("%d", &jahr);
//Berechnung
if (jahr >= 1585 && jahr % 4 == 0 && jahr % 100 == 0 && jahr % 400 != 0)
printf ("Das Jahr ist ein Schaltjahr");
else
printf ("Das Jahr ist kein Schaltjahr");
//Systempausieren
system("PAUSE");
return 0;
}
Das ist mein Quelltext bis jetzt und wenn ich diesen Ausführe und 1840 eingebe kommt allerdings raus dass das Jahr kein Schaltjahr ist obwohl es eines ist..
Hoffe auf Hilfe!
Meine Ideen:
siehe oben
Fulli hat dieses Bild (verkleinerte Version) angehängt:
11.12.2011 12:42
Fulli unregistriert
achja und was genau für eine Bibliothek muss ich hinzufügen damit er gotoxy versteht?
deine Bedingung ist falsch! Sie wird nur wahr, wenn dein Jahr durch 100 und nicht durch 400 teilbar ist (neben deinen anderen Bedingungen).
Goto sollte auch ohne eine weitere Bibliothek funktionieren. Jedoch mit Leerzeichen zwischen goto und der Sprungmarke:
code:
1:
2:
3:
4:
5:
6:
goto Sprungmarke;
//Viel sinnvoller Quelltext
Sprungmarke:
//Quelltext hinter der Sprungmarke
VG,
Karlito
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Karlito: 12.12.2011 20:47.
12.12.2011 20:46
tops unregistriert
Sprungmarken sind aus der guten alten Basic Zeit und zeugen von schlechtem Stil, gewöhn dir das also erst gar nicht an, es gibt genügend Kontrollstrukturen mit denen jegliche Programmierung auch ohne Sprünge auskommt wo du hier nichtmal Schleifen benötigst wo es die Konstrukte break und continue gibt.
Die Definition von Schaltjahren wie sie hier in Europa verstanden wir ist ganz einfach,
Jahre die durch 4 und 100 teilbar sind aber nicht durch 400, das in einen booleschen Ausdruck mittels Modulo Operator gefasst und das wars.
17.12.2011 12:58
tops unregistriert
Das kann man wie folgt schreiben, da jede zahl die durch 100 teilbar ist auch durch 4 teilbar ist:
Nicht alles und verknüpfen da liegt dein Fehler, denn 1840 ist durch 4 teilbar, aber nicht durch 100 und daher erfolgt bei dir die Ausgabe kein Schaltjahr.