Schaltjahr



  • hi!!
    ich hab gerade so ein kleines problem... hab auf dem pc keine c++ programm drauf und dann des programm gerade net teste, kann mir bitte wer von euch sagen, ob des programm funktz??

    angabe: eine jahreszahl, ist zu überprüfen, ob es sich um ein schaltjahr handelt und wiederrum auszugeben

    hinweis: ist die jahreszahl durch 400 teilbar bzw. durch 4teilbar UND durch 100 nicht teilbar, so handelt es sich um ein schaltjahr

    #include<stdio.h>
    #include<conio.h>

    void main()
    {
    int jahr;

    clrscr();
    printf("Berechnung eines Schaltjahres!!");
    printf("\n\nGeben sie eine Jahreszahl fr die Bestimmung eines Schaltjahres ein: ");
    scanf("%d", jahr);

    if(jahr%400==0)
    {
    printf("\n\n\nEin Schaltjahr liegt vor.");
    }

    else
    {
    if(jahr%4==0&&jahr%100==0) /* Hier san meine Aufzeichnungen unvollständig!! müsste doch "jahr%100!=0" sein und net gleich, oder??*/
    {
    printf("\n\nSchaltjahr liegt vor.");
    }
    else
    {
    printf("\n\nEs liegt kein Schaltjahr vor.");
    }
    }
    }

    nur zur probe:
    1996 is ein schaltjahr, weil durch 4teilbar aber nicht durch 100
    2000 ist schaltjahr, weil durch 100teilbar
    1800 is kein schaltjahr, weil durch 4 UND AUCH durch 100 teilbar, jedoch net durch 400
    1333 kein schaltjahr, weil net durch 4teilbar..

    thx, mfg, miaui



  • deleted: war nicht korrekt, sorry



  • dein code is nicht korrekt!
    ein schaltjahr liegt vor, wenn die jahreszahl ohne rest durch 400 oder
    ohne rest durch 4 und mit rest durch 100 teilbar ist.

    if ( (year%4==0 && year%100!=0)||year%400==0)
          printf("Schaltjahr\n");
    

    ausserdem heisst es:

    scanf("%d", &jahr);
    

    und die funktion clrscr() ist auch kein ansi.

    benutz doch das nächstemal code-tags

    b4sh0r



  • Wie wäre es einfach mal mit nem Schreibtischtest?
    Einfach mal mit paar Werten durchrechnen.. 😉



  • ich weiß.... ich hab die version unverbessert gespeichert... das san a paar fehler..... trotzdem danke



  • außerdem soll er zuerst prüfen, ob es durch 400teilbar is... es muss net auch noch durch 400teilbar sein.... ich wollt nur wissen, ob es == oder != war...

    PS: wir werden gezwungen, jedes mal die anzeige zu löschen, via clrscr()....



  • die korrekte, funktionierende version gefunden
    thx at all

    PS:

    #include<stdio.h>
    #include<conio.h>

    void main()
    {
    int jahr,schaltjahr;

    clrscr();
    printf("Berechnung eines Schaltjahres!!");
    printf("\n\nGeben sie eine Jahreszahl fr die Bestimmung eines Schaltjahres ein: ");
    scanf("%d",& jahr);

    if(jahr%400==0)
    {
    schaltjahr=1;
    }

    else
    {
    if(jahr%4==0&&jahr%100!=0)
    {
    schaltjahr=1;
    }
    else
    {
    schaltjahr=0;
    }
    }

    if(schaltjahr)
    {
    printf("\n\nEs liegt ein Schaltjahr vor.");
    }
    else
    {
    printf("\n\nEs liegt kein Schaltjahr vor.");
    }

    }



  • hier meine version (C++)

    #include <iostream>
    using namespace std;
    
    void main()
    {
    	int year;
    	cout<<"Programm zum Ueberpruefen einer Jahreszahl auf Schaltjahreseigenschaft."<<endl;
    	cout<<"Jahreseingabe: "<<endl;
    	cin>>year;
    	if ((year%4==0 && year%100!=0)||year%400==0)
    		{
    			cout<<"Das Jahr "<<year<<" ist ein Schaltjahr."<<endl;
    		}
    	else
    		{
    			cout<<""<<year<<" ist kein Schaltjahr!"<<endl;
    	    }
    }
    

    mfg rum



  • rum schrieb:

    hier meine version (C++)

    Das ist KEIN C++!



  • öm o_O

    jetz muss ich mal dumm fragen was daran nicht c++ nicht, weil ich im ersten semester C hatte und ich mich an printf und scanf noch erinnern kann

    mfg rum

    (ein irrtum existiert um berichtigt zu werden^^)

    edit:
    arg; hab grad den kleinen link geklickt, und mir das hello world mal angegugt^^
    --AUA--


  • Mod

    rum schrieb:

    öm o_O

    jetz muss ich mal dumm fragen was daran nicht c++ nicht, weil ich im ersten semester C hatte und ich mich an printf und scanf noch erinnern kann

    mfg rum

    (ein irrtum existiert um berichtigt zu werden^^)

    ich nehme mal an, er meint das void main()

    es MUSS richtig int main() oder int main(int, char*) heissen (weitere varianten mit anderen argumenten dürfen durch den compiler implementiert werden, aber der return typ muss STETS int sein).

    void main() war in C++ noch nie legal.



  • aahhhh

    gut zu wissen

    danke

    mfg rum



  • das void main is compilerabhängig.... ich sag nur borland



  • miaui schrieb:

    das void main is compilerabhängig.... ich sag nur borland

    nein, ist es nicht. Es ist verboten. Die Sprache C++ wir nicht von irgendwelchen Compilerbauern festgelegt.



  • camper schrieb:

    es MUSS richtig int main() oder int main(int, char*) heissen (weitere varianten mit anderen argumenten dürfen durch den compiler implementiert werden, aber der return typ muss STETS int sein).

    void main() war in C++ noch nie legal.

    wenn schon, dann

    int main (int, char**)
    

    😃



  • Würde es nicht auch reichen das Jahr nur durch 4 zu dividieren?
    z.B. 2000%4 == 0, 20016%4 == 0;

    MfG CSS


  • Mod

    Horst2 schrieb:

    camper schrieb:

    es MUSS richtig int main() oder int main(int, char*) heissen (weitere varianten mit anderen argumenten dürfen durch den compiler implementiert werden, aber der return typ muss STETS int sein).

    void main() war in C++ noch nie legal.

    wenn schon, dann

    int main (int, char**)
    

    😃

    genauer: int main(int, char*[]), kleiner fehler von mir.



  • CSS schrieb:

    Würde es nicht auch reichen das Jahr nur durch 4 zu dividieren?
    z.B. 2000%4 == 0, 20016%4 == 0;

    MfG CSS

    Nein, denn Das Jahr z.B. 200 ist kein Schaltjahr.

    Caipi





  • Walli schrieb:

    rum schrieb:

    hier meine version (C++)

    Das ist KEIN C++!

    sorry, aber bis auf das 'void main' ist alles c++; es wäre mir neu wenn es in c ein 'using namespace std;' gab (verbessert mich falls ich mich irre) 😉


Anmelden zum Antworten