Brauche Hilfe bei 2 kleinen Programmen



  • SeppJ schrieb:

    Und dann ein Programm, welches die Summe der ersten N Zahlen ausrechnet. Bonuspunkt mit drei goldenen Sternchen, wenn das Programm keinerlei Schleife enthält, dabei aber nur 3 Semikolons.

    Mit 2 Semikolons:

    int sum(int n)
    { 
    	return( ( n <= 0 ) ? 0 : (n + sum( n - 1 )) );
    }
    
    int main( int argc, char *argv[] )
    {
    	return( sum( argc - 1 ) );
    }
    

    errorlevel = summer 1
    errorlevel = summer 1 1
    errorlevel = summer 1 1 1
    ...

    🙂


  • Mod

    Das ist auch eine schöne Lösung, aber das zähle ich als verkappte Schleife 🙂 . Ich dachte eher an die clevere Lösung, auf die man durch richtiges Nachdenken kommt (bitte nicht verraten!). Gewisse Genies würden sagen, das wäre kinderleicht *hint*.



  • Ist das nicht in etwa dasselbe Problem wie:

    1. Fig: X
    
    2. Fig: XX
             X
    
    3. Fig: XXX
             XX
              X
    
    4. Fig: XXXX
             XXX
              XX
               X
    
    usw.
    
    Wieviele X hat die 20. Fig
    

    Wenn ja: Ich kenn die Lösung, die ist:
    Nö, so gemein bin ich mal nicht 😃



  • Oder #2 (klappt aber nur bedingt):

    int sum(int n)
    { 
    	return( ( n <= 0 ) ? 0 : (n + sum( n - 1 )) );
    }
    
    int main( int argc, char *argv[] )
    {
    	printf( "%d\n", sum( argc > 1 ? (*argv[1] - 0x30) : 0 ) );
    }
    

    summer 1
    summer 2
    summer 3
    ...

    😉



  • @EOP: Nix Schleife und auch nix Rekursion. Gibt ne viel einfachere Lösung.



  • #3: Gauß :p

    SeppJ hat doch gesagt - nix verraten.
    Die Beiden waren nur Spielereien...



  • @EOP
    Was soll denn das 0x30 ?
    Meinst du damit '0' ?

    Dann schreib das doch auch!



  • DirkB schrieb:

    @EOP
    Was soll denn das 0x30 ?
    Meinst du damit '0' ?

    Dann schreib das doch auch!

    Ich benutze hex für ascii gewohnheitsmäßig seit zig Jahren. Tschuldigung.

    Aber sum will ja auch ein int und nix mit Hochkommas. 😉



  • ASCII. Pah, wie eingeschränkt. 🙂

    Und '0' ist doch ein int. Genau so wie 'A'.



  • DirkB schrieb:

    ASCII. Pah, wie eingeschränkt. 🙂

    Und '0' ist doch ein int. Genau so wie 'A'.

    Hätte eigentlich erwartet, daß du dich beschwerst weil ich Hochkammas und nicht Hochkommata geschrieben hab. 🙂



  • EOP schrieb:

    Hätte eigentlich erwartet, daß du dich beschwerst weil ich Hochkammas und nicht Hochkommata geschrieben hab. 🙂

    Warum sollte ich mich beschweren? Im Post hast du es ja noch richtig geschrieben (Rechtschreibung): Hochkommas

    Im Duden steht:
    "das Komma; Genitiv: des Kommas, Plural: die Kommas und Kommata"



  • DirkB schrieb:

    EOP schrieb:

    Hätte eigentlich erwartet, daß du dich beschwerst weil ich Hochkammas und nicht Hochkommata geschrieben hab. 🙂

    Warum sollte ich mich beschweren? Im Post hast du es ja noch richtig geschrieben (Rechtschreibung): Hochkommas

    Im Duden steht:
    "das Komma; Genitiv: des Kommas, Plural: die Kommas und Kommata"

    Hab's gesehen war aber zu faul für'n edit.

    Und nächstes Mal schreib' ich 060 statt 0x30... 🙂



  • EOP schrieb:

    Und nächstes Mal schreib' ich 060 statt 0x30... 🙂

    Wird Zeit, dass der Standard endlich binäre Zahlen erlaubt.



  • Habs jetzt seit paar Tagen fertig. Wenns wer wissen will, hier sind die Codes:

    #include <stdio.h>
    
    int main(void) {
    
    double zahl = 0;
    
    int h = 0;
    
        printf("Geldschein/Muenzen-Berechnungs-Programm \n");           //Titel es Programms
    
        printf("======================================== \n \n");       //Trennzeile
    
        printf("Betrag in Euro --> ");                                  //Eingabeaufforderung des Betrags(in Euro)
        scanf("%lf", &zahl);                                            //Hier wird das vom User eingegebene eingelesen
        zahl *= 100;                                                    //Hier wird der Betrag in Cent umgerechnet
    
        printf("\n");                                                   //Zeielumbruch(damits besser aussieht)
    
        h = zahl / 50000;                                               //In diesen 3Zeilen wird berechnet & ausgegeben wie viele
        printf("%d 500 Euro-Schein(e)\n", h);                           //500 Euro Scheine benoetigt werden
        zahl -= (h * 50000);
    
        h = zahl / 20000;                                               //In diesen 3Zeilen wird berechnet & ausgegeben wie viele
        printf("%d 200 Euro-Schein(e)\n", h);                           // 200Euro Scheine benoetigt werden
        zahl -= (h * 20000);
    
        h = zahl / 10000;                                               //In diesen 3Zeilen wird berechnet & ausgegeben wie viele
        printf("%d 100 Euro-Schein(e)\n", h);                           // 100Euro Scheine benoetigt werden
        zahl -= (h * 10000);
    
        h = zahl / 5000;                                                //In diesen 3Zeilen wird berechnet & ausgegeben wie viele
        printf("%d 50 Euro-Schein(e)\n", h);                            // 50Euro Scheine benoetigt werden
        zahl -= (h * 5000);
    
        h = zahl / 2000;                                                //In diesen 3Zeilen wird berechnet & ausgegeben wie viele
        printf("%d 20 Euro-Schein(e)\n", h);                            // 20Euro Scheine benoetigt werden
        zahl -= (h * 2000);
    
        h = zahl / 1000;                                                //In diesen 3Zeilen wird berechnet & ausgegeben wie viele
        printf("%d 10 Euro-Schein(e)\n", h);                            // 10Euro Scheine benoetigt werden
        zahl -= (h * 1000);
    
        h = zahl / 500;                                                 //In diesen 3Zeilen wird berechnet & ausgegeben wie viele
        printf("%d 5 Euro-Schein(e)\n", h);                             //5Euro Scheine benoetigt werden
        zahl -= (h * 500);
    
        h = zahl / 200;                                                 //In diesen 3Zeilen wird berechnet & ausgegeben wie viele
        printf("%d 2 Euro-Muenze(n)\n", h);                             // 2Euro Muenzen benoetigt werden
        zahl -= (h * 200);
    
        h = zahl / 100;                                                 //In diesen 3Zeilen wird berechnet & ausgegeben wie viele
        printf("%d 1 Euro-Muenze(n)\n", h);                             // 1 Euro Muenzen benoetigt werden
        zahl -= (h * 100);
    
        h = zahl / 50;                                                  //In diesen 3Zeilen wird berechnet & ausgegeben wie viele
        printf("%d 50 Cent-Muenze(n)\n", h);                            // 50Cent Muenzen benoetigt werden
        zahl -= (h * 50);
    
        h = zahl / 20;                                                  //In diesen 3Zeilen wird berechnet & ausgegeben wie viele
        printf("%d 20 Cent-Muenze(n)\n", h);                            // 20Cent Muenzen benoetigt werden
        zahl -= (h * 20);
    
        h = zahl / 10;                                                  //In diesen 3Zeilen wird berechnet & ausgegeben wie viele
        printf("%d 10 Cent-Muenze(n)\n", h);                            // 10Cent Muenzen benoetigt werden
        zahl -= (h * 10);
    
        h = zahl / 5;                                                   //In diesen 3 Zeilen wird berechnet & ausgegeben wie viele
        printf("%d 5 Cent-Muenze(n)\n", h);                             // 5Cent Muenzen benoetigt werden
        zahl -= (h * 5);
    
        h = zahl / 2;                                                   //In diesen 3Zeilen wird berechnet & ausgegeben wie viele
        printf("%d 2 Cent-Muenze(n)\n", h);                             //2Cent Muenzen  benoetigt werden
        zahl -= (h * 2);
    
        h = zahl / 1;                                                   //In diesen 3Zeilen wird berechnet & ausgegeben wie viele
        printf("%d 1 Cent-Muenze(n)\n", h);                             // 1Cent Muenzen benoetigt werden
        zahl -= (h * 1);
    
    return 0;
    
    }
    
    #include <stdio.h>
    
    int main (void) {
    
        double kapital, zinssatz, zinsen;
        int j, m, d;
    
        printf("Kapital (in Euro) --> ");   //Eingabeaufforderung fuer den Betrag in Euro
        scanf("%lf", &kapital);             //Das Kapital wird eingelesen (in Euro)
    
        printf("Zinssatz (in %%) --> ");    //Eingabeaufforderung des Zinssatzes in Prozent
        scanf("%lf", &zinssatz);            //Der zinssatz wird eingelesen(in %)
    
        printf("Verzinsungsdauer (im Format j-m-d) --> ");  //Eingabeaufforderung der Verzinsungsdauer
        scanf("%d-%d-%d", &j, &m, &d);                      //Verzinsungsdauer wird eingelesen
        printf("---------------------------------------------------\n");        //Trennzeile
        zinsen = (kapital * zinssatz * (j * 360 + m * 30 + d)) / (100 * 360);   //Hier wird alles ausgerechnet
    
        printf("Es ergeben sich Zinsen von %.2f Euro.\n", zinsen);              //Hier wird ausgegeben wv Zinsen es sind(in Euro)
        printf("Wert des einfach verzinsten Gesamtkapitals: %.2f Euro.\n", kapital + zinsen);           //Hier wird der Wert des einfach verzinsten Gesamtkapitals ausgegeben
    
        return 0;
    }
    

    MfG

    Btw.: kann geclosed werden



  • Ja super.
    Und wenn du auch noch den Rückgabewert von scanf auswertest und den Tastaturpuffer löscht, können auch irgendwelche DAU mit ihren Eingaben dein Programm nicht mehr aushebeln.


Anmelden zum Antworten