Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Informatik in der Schule » Prorgamm zur Schaltjahrberechnung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Prorgamm zur Schaltjahrberechnung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Fulli
unregistriert
Prorgamm zur Schaltjahrberechnung Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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:
Struktogramm.png

11.12.2011 12:42
Fulli
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

achja und was genau für eine Bibliothek muss ich hinzufügen damit er gotoxy versteht?
11.12.2011 12:44
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo,

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 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
tops
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Das kann man wie folgt schreiben, da jede zahl die durch 100 teilbar ist auch durch 4 teilbar ist:

if( (Jahr%4==0 && %400!=0) || (jahr%100=0 && jahr%400!=0)

durch Minimierung Booleschers Ausdrücke:

if(Jahr%400!=0 &&(Jahr%4==0 || Jahr%100=0))

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.


Entweder ist das Jahr durch
17.12.2011 13:07
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Informatik in der Schule » Prorgamm zur Schaltjahrberechnung