Anfänger braucht Hilfe!!!



  • Hallo Leute,
    würd mich freuen wenn ihr mir helfen könntet...

    Zur Aufgabe:
    Schreiben Sie ein Programm, das den Benutzer auffordert, fünf double-Werte einzugeben. Das Programm soll die fünf Werte in einem geeigneten Vektor speichern und dann die Summe dieser fünf Werte ausgeben.

    Meine "falsche" Lösung:

    #include <stdio.h>
    
    double summe(double zahl[0], double zahl[1], double zahl[2],double zahl[3], double zahl[4])
    
    {
        return (zahl[0]+zahl[1]+zahl[2]+zahl[3]+zahl[4])
    }
    
    int main()
    
    {
        double zahl[5];
        int i=0;
    
        printf("Geben Sie f%cnf double-Zahlen ein\n\n",129);
    
        printf("Geben Sie die erste Zahl ein: ");
    
        while (i<=4)
    
        {
            scanf("%lf",&zahl[i]);
    
            if(i!=4)
            {printf("Geben Sie eine weitere Zahl ein: ");}
            i++;
        }
    
        printf("\nDie Summe der f%cnf double-Zahlen betr%cgt: %lf",129,132,summe(zahl[0],zahl[1],zahl[2],zahl[3],zahl[3]));
        printf("\n\n");
    }
    

    Das Problem was ich habe,ist glaub ich, dass ich keine ahnung habe wie ich die Funktion summe mit den in der array 'zahl' gespeicherten zahlen richtig aufstelle...

    danke für eure hilfe
    chris



  • Der Vorteil vom Array ist das man nur einen Namen hat, egal wie groß das Array ist, darum:

    double summe(double zahl[])
    {
        return (zahl[0]+zahl[1]+zahl[2]+zahl[3]+zahl[4])
    }
    ....
        printf("Die Summe der fuenf double-Zahlen betraegt: %lf\n",summe(zahl));
    

    Klar ist das (zahl[0]+zahl[1]+zahl[2]+zahl[3]+zahl[4]) nicht elegant aber,
    du kannst dir ja Gedanken machen wie die Funktion Summe mit einer unterschiedliche Anzahl von Werten klar kommt. 🙂

    Wofür sind eigentlich die Zahlen 129,132 bei printf ?



  • Die korrekte weil standardkonforme Formatvorgabe für double in printf lautet: "%f" und nicht wie bei dir "%lf". Dein Code produziert also allein damit und neben anderen Dingen undefiniertes Verhalten.



  • Super Jungs! Danke funktionier!

    @DirkB:
    Die Zahlen 129,132 bei printf sind aus der ascii-Tabelle, so können dann auch Buchstaben wie bspw. ä,ü und ö im ausführenden Fenster wiedergegeben werden, anstatt diese mit ae, ue oder oe umzuschreiben.DAher an der entsprechenden Stelle auch immer %c im Wort.

    @Wutz: Bei meinem Professor hieß es,

    int Variablen sind mit %d
    float Variablen sind mit %f
    double Variablen sind mit %lf

    ein- und auszulesen

    nochmals Danke für die Hilfe!!



  • chrisberry schrieb:

    Die Zahlen 129,132 bei printf sind aus der ascii-Tabelle, so können dann auch Buchstaben wie bspw. ä,ü und ö im ausführenden Fenster wiedergegeben werden, anstatt diese mit ae, ue oder oe umzuschreiben.DAher an der entsprechenden Stelle auch immer %c im Wort.

    Du kannst in einem String auch Escapesequenzen angeben. \n ist so eine.
    Man kann auch Hexzahlen angeben indem man ein \x voranstellt. Für 129 dann \x81.
    Dann heißt das halt "f\x81nf" für fünf.

    Eleganter ist es natürlich wenn man das Encoding der Konsole richtig einstellt.


Log in to reply