Größte & kleinste Zahl



  • Hallo liebe Community,

    ich habe ein C-Problem und dabei keine Ahnung, warum es nicht funktioniert.

    Wie der Titel es sagt, soll nach 12 eingegebenden Zahlen die Größte und Kleinste ausgegeben werden.

    # include <stdio.h>
    main ()
    {
    
    int n,max,min,i,zahl;
    n=0;
    for (i=0;i<12;i++)
    {
    printf("\nBitte geben Sie eine Zahl ein.");
    scanf("\t%d",&zahl);
    if (n==0) 
    {
    max=zahl;
    min=max;
    }
    else
    {
    printf("");
    }
    if (zahl>max)
    {
    zahl=max;
    }
    else if (zahl<min)
    {
    zahl=min;
    }
    n++;                 
    
    }
    printf("\nDie größte Zahl ist: %d und die kleinste: %d",max,min);
    
    }
    

    Jedoch bekomme ich immer wieder bei beiden die erste eingegebende Zahl raus. 😞

    Vielen Dank im Voraus



  • Genauso wie bei dieser Aufgabe...ich sehe keinen Fehler und trotzdem meckert er. 😞 Zum verzweifeln.

    # include <stdio.h>
    main ()
    {
    int zahl[12],max,2max,i,k=0;
    
    for (i=1;i<13;i++)
    {
        printf("\nBitte geben Sie eine Zahl ein.");
        scanf("\t%d";&zahl[k]);
        if (k==0)   {zahl[1]=max;2max=max;}
        if (zahl[k]>max)
        {
        zahl[k]=max;
        }
        else if (zahl[k]>2max)
        {
        zahl[k]=2max;
        }
    k++;
    }
    
    printf("\nDie groeßte Zahl lautet %d und die zweitgroeßte %d.",max,2max);
    
    }
    


  • Wenn du eine größere Zahl als max findest, solltest du max ändern, nicht die Zahl.



  • Danke schonmal für den Hinweis. Die Fehlermeldungen die der Compiler ausspuckt:

    gcc.exe 32.c:4:18: invalid suffix \\"max\\" on integer constant 32.c: In function `main\\': 32.c:4: error: syntax error before numeric constant 32.c:7: error: `i\\' undeclared (first use in this function) 32.c:7: error: (Each undeclared identifier is reported only once 32.c:7: error: for each function it appears in.) 32.c:10: error: syntax error before \\';\\' token 32.c:10: error: `k\\' undeclared (first use in this function) 32.c:10: error: syntax error before \\')\\' token 32.c:11:30: invalid suffix \\"max\\" on integer constant 32.c:16:22: invalid suffix \\"max\\" on integer constant 32.c:18:5: invalid suffix \\"max\\" on integer constant 32.c:23:68: invalid suffix \\"max\\" on integer constant



  • saukaelte schrieb:

    gcc.exe 32.c:4:18: invalid suffix \\"max\\" on integer constant

    Ja, "2max" ist auch kein leagler Variablenname - das erste Zeichen muß ein Buchstabe oder Unterstrich sein.
    (der Rest sind Folgefehler, weil der Compiler nach diesem Problem aus dem Tritt gekommen ist, und Wiederholungen des selben Fehlers)

    Und inhaltlich: Deine Zuweisungen stehen falsch herum, dadurch füllst du letztlich dein gesamtes Array mit dem (undefinierten) Inhalt von 'max'. Richtig wäre max=zahl[k]; .



  • jo, naja und die Schleife würd ich auch so aussehen lassen:

    for(i = 0; i < 12; ++i)
    

    da dein Array auch bloß 12 Elemente groß ist und von daher von 0 bis 11 geht und nicht von 1 bis 12



  • und außerdem bedeutet es "int main()" 😉

    Edit: Argh, hier ist ja C.

    Da bin ich mir nicht mehr so sicher^^



  • The-Kenny schrieb:

    und außerdem bedeutet es "int main()" 😉

    Edit: Argh, hier ist ja C.

    Da bin ich mir nicht mehr so sicher^^

    In C ist kein Rückgabetyp gleichbedeutend mit Rückgabetyp int 😉



  • Ahh. Danke Jungs. Na darauf wäre ich in den nächsten 23023 Jahren nicht gekommen.

    Edit:

    Jetzt kann ich es kompilieren, aber es kommt totaler Schrott bei der Ausführung des "Programms" raus...naja probier ich mal den Fehler zu finden.

    # include <stdio.h>
    main ()
    {
    int zahl[12],max,max2,i,k=0;
    
    for (i=1;i<13;i++)
    {
        printf("\nBitte geben Sie eine Zahl ein.");
        scanf("\t%d",&zahl[k]);
        if (k==0)   {zahl[1]=max;max2=max;}
        if (zahl[k]>max)
        {
        max=zahl[k];
        }
        else if (zahl[k]>max2)
        {
        max2=zahl[k];
        }
    k++;
    }
    
    printf("\nDie groesste Zahl lautet %d und die zweitgroesste %d.",max,max2);
    
    }
    

    Aber das "größte+kleinste Zahl" funktioniert nun bestens. 👍


Anmelden zum Antworten