interesse an ner Aufgabe lösen?



  • Ok. Die Aufgabe lautet folgendermassen:

    ich selber hab sie probiert darzustelln, doch ich komme auf einen unheimlichen code, der funktioniert - aber ich bin Anfänger und möchte gerne mal schaun wie ihr Profis es löst 😮

    also:

    Über Tastatur sollen 3 beliebige Zahlen eingegeben werden, welche in aufsteigender Form sortiert werden und anschliessend angezeigt werden.

    *Beispiel:
    1.Zahl eingeben: 47
    2.Zahl eingeben: 15
    3.Zahl eingeben: 83

    Sortiert: 15 47 83
    *
    Erweitere das Programm so, dass gleiche Zahlen nicht eingegeben werden können...

    viel spass :p
    Nucl.



  • netter Versuch



  • Original erstellt von nuclear:
    **aber ich bin Anfänger und möchte gerne mal schaun wie ihr Profis es löst 😮
    **

    Man liest die Werte in eine liste ein, und schaut ob der Wert schon enthalten ist... Sollte eigentlich keine 10 Zeilen code kosten...



  • Original erstellt von nuclear:
    **Ok. Die Aufgabe lautet folgendermassen:

    ich selber hab sie probiert darzustelln, doch ich komme auf einen unheimlichen code, der funktioniert - aber ich bin Anfänger und möchte gerne mal schaun wie ihr Profis es löst 😮

    ...**

    Ich will mal nicht so sein, und hab' Deine Hausaufgabe gemacht:

    #include <stdio.h>
    #include <stdlib.h>
    
    int n (const void *p1, const void *p2)
    { return(*(const int *)p1 - *(const int *)p2); }
    
    int main(void)
    {
        int *p, s = 1, c = 0;
    
        for(p=malloc(s*sizeof(int));scanf("%d*[^\n]",p+c);)
        if(!bsearch(p+c,p,c,sizeof(int),n))c++,qsort((c==s)
        ?p=realloc(p,(s<<=1)*sizeof(int)):p,c,sizeof(int),n);
    
        for (s = 0; s < c; s++) printf("%d\n", pi[s]);
    
        free (pi);
    
        return 0;
    }
    

    Natürlich ist die Sache noch nicht fertig; Es können Speicherlecks auftreten, Eingabefehler führen zu Endlosschleifen usw ....

    Aber ich bin sicher, Du schaffst das jetzt alleine ........



  • Mama miaa... is ja nen richtig komplizierter code (für mich) - hey wir habn in der berufsschule erst folgendes durchgenommen:

    printf, scanf, else, if, while - funktionsaufrufe und so ähnliches - und mit dem sollte eigentlich schon die genannte Aufgabe lösbar sein, nur irgendwie klappts bei mir doch nicht ....ich meine vielleicht kennt ihr irgend einen befehl mehr der dies vereinfachen würde.... oder irgend ein durchsichtigen schlauen Tipp...

    wenn ich da jede möglichkeit aufschreiben muss wie:

    if(zahl1<zahl2)
    {
    printf()
    }

    if(zahl1<zahl3) .......usw. das gibt ja 3 zahlen hoch jeweils 3 möglichkeiten also 27mal dieses if irgendwie aufschreiben - ne da mach ich was falsch, wie kann man die einfacher lösen.....hmm 🙄

    also normalerweise solltet ihr das hinkriegen, mit einfachen Befehlen, sonst hätten wir die nicht als Aufgabe bekommen!

    hoffentlich könnt ihr mir nochmals helfen 😕



  • morgen...

    naja.. du speicherst das in ein array, und sortierst es mit qsort, damit sollte es eigentlich klappen...

    http://www.die.net/doc/linux/man/man3/qsort.3.html

    viel glück



  • Der Sinn der Aufgabe ist doch, dass Du dich damit auseinander setzt. Und wenn's 27 IF's werden - dann ist das halt so. Vielleicht ist das auch gewollt. In meinen C-Kursen mach ich das auch immer so:

    1. Den Teilnehmern erst mal nur einfache Mittel an die Hand geben -> Die Lösung wird umfangreich.
    2. Ein neues Element (Arrays) einführen und die nächste Lösung ist kompakter.

    ich meine vielleicht kennt ihr irgend einen befehl mehr der dies vereinfachen würde.... oder irgend ein durchsichtigen schlauen Tipp

    Warum verlangst Du dann die Lösung der gesamten Aufgabe??

    also normalerweise solltet ihr das hinkriegen, mit einfachen Befehlen, sonst hätten wir die nicht als Aufgabe bekommen!

    Logo. Viele Leute hier bekommen das hin. Aber es geht doch nicht darum, ob wir *deine* Aufgaben schaffen. Besser ist es, Du postest vorab Deine Lösung und fragst dann. Damit zeigst Du, dass Du Dich auch schon mit dem Problem auseinandergesetzt hast. Dann helfen Dir auch mehr Leute.



  • Genau. Daher mein Kommentar.



  • ist das möglich:

    if(a>b>c)
    {
    }
    else
    {
    }
    

    else würde nur dann eintreten, wenn (a<b<c)



  • Nein. Syntaktisch würde es gehen, da a<b wieder ein int (0 oder 1, false oder true) ist, der wiederum größer oder kleiner als c sein kann 😉 Aber ich glaube nicht dass dir die Semantik gefällt. Abgesehen davon ist die Umkehrung der (mathematischen) Bedingung a > b > c nicht a < b < c.



  • kleiner Tip

    a<b<c
    kann man auch umstaendlich schreiben
    a<b und b<c
    😉



  • ja dann kann ich das so darstellen?

    if(a<b & b<c) ???

    nja werds mal probiern, bis ne antwort kommt :p



  • also ich hab da folgendes, aber irgendwie wird noch viel mehr ausgegeben, als erwünscht *grummel*:

    #include <stdio.h>
    
    main()
    {
    int a,b,c;
    printf("Bitte drei Zahlen eingeben:");
    scanf("%i%i%i", &a,&b,&c);
    
    if(a>b,b>c)
    {
    printf("%i\n,%i\n,%i\n, a,b,c");
    }
    else
    {
    printf("%i\n,%i\n,%i\n, c,b,a");
    }
    if(a>c,c>b)
    {
    printf("%i\n,%i\n,%i\n, a,c,b");
    }
    else
    {
    printf("%i\n,%i\n,%i\n, b,c,a");
    }
    if(b>a,a>c)
    {
    printf("%i\n,%i\n,%i\n, b,a,c");
    }
    else
    {
    printf("%i\n,%i\n,%i\n, c,a,b");
    }
    getchar();
    getchar();
    }
    


  • uups riesenfehler 😃

    nochmals:

    #include <stdio.h>
    
    main()
    {
    int a,b,c;
    printf("Bitte drei Zahlen eingeben:");
    scanf("%i%i%i", &a,&b,&c);
    
    if(a>b,b>c)
    {
    printf("%i\n,%i\n,%i\n, a,b,c");
    }
    else
    {
    printf("%i\n,%i\n,%i\n, c,b,a");
    }
    if(a>c,c>b)
    {
    printf("%i\n,%i\n,%i\n, a,c,b");
    }
    else
    {
    printf("%i\n,%i\n,%i\n, b,c,a");
    }
    if(b>a,a>c)
    {
    printf("%i\n,%i\n,%i\n, b,a,c");
    }
    else
    {
    printf("%i\n,%i\n,%i\n, c,a,b");
    }
    getchar();
    getchar();
    }
    


  • eh scheisse....jetzt hab ichs falsche kopiert:

    bitte nicht ärgern

    #include <stdio.h>
    
    main()
    {
    int a,b,c;
    printf("Bitte drei Zahlen eingeben:");
    scanf("%i%i%i", &a,&b,&c);
    
    if(a>b,b>c)
    {
    printf("%i\n,%i\n,%i\n", a,b,c);
    }
    else
    {
    printf("%i\n,%i\n,%i\n", c,b,a);
    }
    if(a>c,c>b)
    {
    printf("%i\n,%i\n,%i\n", a,c,b);
    }
    else
    {
    printf("%i\n,%i\n,%i\n", b,c,a);
    }
    if(b>a,a>c)
    {
    printf("%i\n,%i\n,%i\n", b,a,c);
    }
    else
    {
    printf("%i\n,%i\n,%i\n", c,a,b);
    }
    getchar();
    getchar();
    }
    


  • und noch was, die kommas da im printf kommen auch alle weg,

    ja nächstesmal werd ich nochmals alles genau durchcheckn um es hineinzukopiern.....aber irgendwie stellt es mir immer noch 4mal die sortierung dar....hmm..



  • vergesst es, es ist ja alles mathematisch falsch....



  • Könnte irgendein moderator meinen quatsch löschen.... ich habs geschaft *freu*: 🙄

    #include <stdio.h>
    
    main()
    {
    int a,b,c;
    printf("Bitte drei Zahlen eingeben:\n");
    scanf("%i%i%i", &a,&b,&c);
    
    if(a>b&b>c)
    {
    printf("%i\t%i\t%i\n", a,b,c);
    }
    if(a<b&b<c)
    {
    printf("%i\t%i\t%i\n", c,b,a);
    }
    if(a>c&c>b)
    {
    printf("%i\t%i\t%i\n", a,c,b);
    }
    if(a<c&c<b)
    {
    printf("%i\t%i\t%i\n", b,c,a);
    }
    if(b>a&a>c)
    {
    printf("%i\t%i\t%i\n", b,a,c);
    }
    if(b<a&a<c)
    {
    printf("%i\t%i\t%i\n", c,a,b);
    }
    getchar();
    getchar();
    }
    


  • Mach mal lieber statt & überall &&.



  • woo? und warum das 😕

    nee mach ich nicht, wenn ich keinen Sinn darin sehe als den Code zu vergrössern :p


Anmelden zum Antworten