grösste, kleinste Zahl?



  • Wenn die Zahlen in einem Array gespeichert sind, können sie mit qsort ganz einfach sortiert werden.

    #include <stdlib.h>

    void qsort (....);



  • @spiric:

    gehts denn auch mit arrayname.max?

    gruss



  • Damit nichts schief geht, habe ich mal ein kleines Beispielprogramm
    angefügt. qsort benötigt immer noch eine Vergleichsfunktion.

    #include <stdlib.h>

    int CompareInt (const void * p_void1, const void * p_void2)
    {
    const int * p_int1 = (const int 😉 p_void1;
    const int * p_int2 = (const int 😉 p_void2;

    if (* p_int1 < * p_int2)
    return -1;
    else if (* p_int1 > * p_int2)
    return 1;
    else
    return 0;
    }

    void main ()
    {
    int ArrayOfInt [10];
    /* Array belegen */
    qsort (ArrayOfInt, 10, sizeof (int), CompareInt);
    }



  • In einem Array speichern und dann sortieren ist doch Käse ... wenn Die Zahlen eingegeben werden, kann man doch schon entscheiden, was die größte/kleinste Zahl ist ....

    #include <stdio.h>
    
    int main(void)
    {
        int i, max, min;
    
        scanf("%d", &i); max = min = i;
        while (i != -1) {
            if (i > max) max = i;
            if (i < min) min = i;
            scanf("%d", &i);
        }
    
        printf("Max: %d -- Min: %d", max, min); 
        return 0;
    }
    

    PS: Nicht schlagen, wegen scanf() ... :))



  • also unbekannt war eigentlich ich..

    jetzt komm ich deinem code aber nicht so recht nach mady!

    für was: scanf("%d", &i); max = min = i; ....mir nicht logisch!?
    und die while schlaufe ist glaub ich auch nicht notwendig...

    #include <stdio.h>
    
    void main(void)
    {
        int i, max, min, a,b,c;
    
        printf("bitte 3zahlen eingeben:");
        scanf("%i%i%i", &a,&b,&c);
    
        {
            if (i > max) max = i; => dem tschegg ich nicht, warum das, ergibt      doch keinen sinn und für was steht %d - also d?
            if (i < min) min = i;      
            scanf("%i", &i);
        }
    
        printf("Max: %i -- Min: %i", max, min);
    
    }
    

    jetzt müsste ich meiner meinung nach, noch für die variable i festlegen welche zahlen berücksichtig werden oder eben das die eingegbn zahlen verglichen werdn solln....wie macht man das......also i soll aus den variablen a,b,c bestehn und daraus soll man max, und min herausgebn...hmm bisschen mistzeug *g*



  • Wenn Du nur drei Zahlen eingeben willst, ist das wohl kein problem. In meiner Lösung ging ich davon aus, dass Du beliebig viele Zahlen eingeben musst. Deswegen die Schleife.

    Eine Anweisung wie

    min = max = i;
    

    sagt nur, dass min und max den Wert für i erhalten. Die beiden If's sind notwendig, um einen etvl. neuen min- bzw. max-Wert festzulegen. Aber das ist nur notwendig, wenn Du mehrere Eingaben verarbeiten willst.

    Wenn Du tatsächlich nur drei Werte einliest, dann ist die ganze Sache wesentlich leichter. Du musst halt nur a,b und c miteinander vergleichen und so den größten und kleinsten Wert festlegen ... Dazu - glaub ich - gibt's schon nen Thread.



  • Ach ja ...

    gewöhne Dir void main(void) ab.



  • nein ich muss aus 10 zahlen(könnte mal auch mehr sein) die max und min zahl ausgeben lassn....

    gibts für das miteinander vergleichen was spezielles?

    aber dein code funktionier nicht......oder besser gesagt ich weiss nicht wie ich die beliebigen zahlen - zur Eingabe im code integrieren soll....



  • Original erstellt von nuclear:
    nein ich muss aus 10 zahlen(könnte mal auch mehr sein) die max und min zahl ausgeben lassn....

    Dann brauchst Du ne Schleife ...

    gibts für das miteinander vergleichen was spezielles?

    Wie gehabt - bereits bei der Eingabe die Sachen vergleichen und alles ist ok .. 🙂

    aber dein code funktionier nicht......oder besser gesagt ich weiss nicht wie ich die beliebigen zahlen - zur Eingabe im code integrieren soll....

    Hmmm ... ich denke, ich habe keinen Fehler. Einfach mal compilieren und in der Console (Windows User - richtig?) starten und Zahlen der Reihe nach eingeben....



  • nö ich verwende console wizard....

    warum nimmst du immer %d ...statt %i?

    und also ich hab wenig schnall wie das gehn soll....ich geb z.B 10 zahlen ein aber passieren tut nichts...(irgendwie wärs logisch das man ne max. anzahl an zahlen festlegt die man eingeben kann...sonst kann ich ja ewig die enter taste drücken und das programm weiss nicht ob es jetzt endlich die max, min zahl heraussuchn kann).......oder man legt fest, das bei drücken einer gewissen Taste das programm die max, min zahl heraussucht, ginge das?

    es wäre nett wenn du einem nichtswissenden wie mir, es ein klein wenig genauer erklären könntest 😞

    aber is echt nett das du immer was antwortest 🙂



  • Aso ...

    naja ... in meinem Progy läuft die Schleife solange, bis Du -1 als Wert eingibst ...

    %d ist gewohnheit ...

    Probier die Sache mit -1 aus, und schau Dir meine Lösung nochmal an. Dann checkst Du das schon... 🙂

    EDIT: Falsche Aussage gelöscht .. ://

    [ Dieser Beitrag wurde am 04.11.2002 um 22:17 Uhr von mady editiert. ]


Anmelden zum Antworten