Arrays und int-Werte



  • Hallo,

    08mmarte schrieb:

    pointercrash() schrieb:

    Schau' mal die Bedingung Deiner for- Schleife an 🙄

    Was stimmt damit nicht??
    Ich sehe in der Bedingung kein Fehler...

    Sieht Noten jetzt so aus?:

    double Noten [4][5];
    

    Wenn ja:

    double-Werte werden z.B. mit der printf-Formatzeichenkette "%f" ausgegeben, aber sicher nicht mit "%.2i".

    MfG,

    Probe-Nutzer



  • Probe-Nutzer schrieb:

    Sieht Noten jetzt so aus?:

    double Noten [4][5];
    

    Deine Laufindices passen nicht zum ursprünglich angegebenen Array. ^^^^



  • pointercrash() schrieb:

    Probe-Nutzer schrieb:

    Sieht Noten jetzt so aus?:

    double Noten [4][5];
    

    Deine Laufindices passen nicht zum ursprünglich angegebenen Array. ^^^^

    Danke jetzt funktionierts...



  • Probe-Nutzer schrieb:

    double Noten [4][5];
    

    Nochmals zu dem, ich weiss nicht mehr wer das war aber irgendjemand hat mir gesagt das es umgekehrt richtig wäre....ich hatte es anfangs so aber habe es dan geändert...



  • Willst Du sowas:

    #include <stdlib.h>
    #include <stdio.h>
    
    #define MAX_GRUPPEN 5
    #define PERSONEN 4
    
    //Double-Vergleich
    int compare_double(const void* l, const void* r)
    {
        return (*(double*)l - *(double*)r);
    }
    
    int main(void)
    {
    
        //Testdaten
        double noten[MAX_GRUPPEN][PERSONEN] =
        {
            {1, 3, 1, 6},
            {3, 3, 1, 6},
            {1, 3, 1, 3},
            {3, 3, 4, 5},
            {6, 3, 2, 6}
        };
        size_t gruppe;
    
        //sortieren
        for(gruppe = 0; gruppe != MAX_GRUPPEN; ++gruppe)
        {
            qsort(noten[gruppe], PERSONEN, sizeof(*noten[gruppe]), compare_double);
        }
    
        //Ausgabe
        for(gruppe = 0; gruppe != MAX_GRUPPEN; ++gruppe)
        {
            size_t person;
            putchar('\n');
            for(person = 0; person != PERSONEN; ++person)
            {
                printf("Gruppe: %d, Person: %d, Note: %f\n", gruppe, person, noten[gruppe][person]);
            }
        }
    
        return EXIT_SUCCESS;
    }
    

    😕



  • Sorry hab vergessen zu erwähnen das ich es bereits erledigt habe, soll heissen bin fertig



  • 08mmarte schrieb:

    Probe-Nutzer schrieb:

    double Noten [4][5];
    

    Nochmals zu dem, ich weiss nicht mehr wer das war aber irgendjemand hat mir gesagt das es umgekehrt richtig wäre....ich hatte es anfangs so aber habe es dan geändert...

    wie herum ist egal. es sind immer 20 doubles die direkt aneinander kleben. du kannst auch mit vertauschten indizes auf den speicher zugreifen.
    🙂



  • Aha...schon wieder etwas gelernt... 👍



  • -fricky- schrieb:

    wie herum ist egal. es sind immer 20 doubles die direkt aneinander kleben. du kannst auch mit vertauschten indizes auf den speicher zugreifen. 🙂

    Ah, ein Beitrag zur Förderung leserlichen Codes?
    Zwar sachlich richtig, aber 'nen Anfänger, der Probleme mit der Laufweite einer For- Schleife hat, damit anzufüttern halte ich für etwas unglücklich ... 🙄



  • pointercrash() schrieb:

    ...aber 'nen Anfänger, der Probleme mit der Laufweite einer For- Schleife hat, damit anzufüttern halte ich für etwas unglücklich

    naja, er hat ja danach gefragt...
    🙂


Anmelden zum Antworten