Schaltjahr Funktion

Algorithmen, Sprachunabhängige Diskussionen zu Konzepten, Programmiersprachen-Design
Antworten
namdlef
Beiträge: 10
Registriert: Sa Dez 17, 2011 10:58 pm

Schaltjahr Funktion

Beitrag von namdlef » Sa Jan 14, 2012 9:03 pm

Hallo allerseits,

ich habe mich kürzlich hier angemeldet, weil ich wieder angefangen habe C++ zu programmieren. Und nun kam ich auf die Idee einfach mal eine Funktion nach einem Struktogramm zu entwerfen. Ich finde das gehört schließlich auch dazu. :)
Auf http://www.it-didaktik.de/ae/Kap4/A5B.htm fand ich dann die Wenn - Dann Entscheidung zur Berechnug von Schaltjahren und habe danach eine Funktion geschrieben.
Und nun möchte ich den Einen oder Anderen mal bitten und zu schauen, ob meine Funktion dem Struktogramm einigermaßen entspricht, ich hab wirklich nirgends abgeschrieben. Zum schnelleren Testen gebe ich euch auch die main Funktion mit. So ... hier mal das Programm:

Vielen Grüße und einen schönen Abend

Code: Alles auswählen

#include <iostream>
using namespace std;

bool teste_schaltjahr(int jahr)
{
    if((jahr % 4) != 0)
    {
        return false;
    }

    if( (jahr % 4 == 0) && (jahr % 100 != 0))
    {
        return true;
    }

    if( (jahr % 4 == 0) && (jahr % 100 == 0) && (jahr % 400 == 0))
    {
        return true;
    }

    return false;

}

int main()
{
    int j = 0;

    for(int i = 1800; i < 2400; i++)
    {
        if(teste_schaltjahr(i) == true)
        {
            j++;
            cout << i << "  ";
            if(j == 8)
            {
                cout << endl;
                j = 0;
            }
        }
    }

    return 0;
}

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Schaltjahr Funktion

Beitrag von cloidnerux » Sa Jan 14, 2012 9:49 pm

Und nun möchte ich den Einen oder Anderen mal bitten und zu schauen, ob meine Funktion dem Struktogramm einigermaßen entsprich
Das tut es an einigen Ecken noch nicht und zwar weil:

Code: Alles auswählen

 if((jahr % 4) != 0)
    {
        return false;
    }

    if( (jahr % 4 == 0) && (jahr % 100 != 0))
    {
        return true;
    }
Du testest hier wiederholt ob sich das Jahr durch 4 Teilen lässt, wo doch die Funktion sich beenden würde wäre es nicht der Fall. Daher ist das (jahr % 4 == 0) absolut unnötig, sowie in den nachfolgenden Zeilen die Wiederholungen der Bedingungen.

Ansonsten macht es das, was das Struktogramm beschreibt.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Schaltjahr Funktion

Beitrag von Xin » So Jan 15, 2012 11:35 am

Für eine exakte Abbildung des Struktogramms müssten die Bedingungen verschachtelt sein.

Struktogramme sind eine Veranschaulichung für Programmkonstrukte, wie if und while. An der Stelle endet ihre Nützlichkeit auch schon. Ansonsten gibt es vermutlich mehr Quellcodes, um Struktogramme erklären, als es Struktogramme gibt, um Quellcode zu erklären. Anders formuliert... sie sind nett zu kennen, aber spielen bei der Programmierung keine Rolle.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten