Programmierung in C Aufgabe



  • Dieser Beitrag wurde gelöscht!


  • @Progkid sagte in Programmierung in C Aufgabe:

    char manschaft [18] = {'B', 'D', 'L', 'H', 'U','S', 'R', 'E', 'K', 'M', 'V', 'Mg', 'He', 'W', 'A','Ar', 'Vf', 'F','\0'};

    Das ist so bestimmt nicht gemeint. Erstmal geht das so auch nicht, den in einfachen Anführungszeichen finden sich EINZELNE chars, also nicht 'Mg'. Ich finde das Wording der Aufgabe mäßig, aber vermute, dass du es so machen sollst:

    char manschaften[18][20] = {
        "Werder", "HSV", "Holzbein Kiel", "weitere Teams", ...
    };
    

    Am besten schreibst du die Zahlen auch nicht direkt so rein, sondern machst Konstanten draus:

    #define MAX_TEAMNAME_LENGTH 20
    #define N_MANNSCHAFTEN 18
    
    struct team {
        char name[MAX_TEAMNAME_LENGTH];
        int punkte;
        int tore;
        int tordifferenz;
        float torchance;
    };
    
    char manschaften[N_MANNSCHAFTEN][MAX_TEAMNAME_LENGTH] = {
        "Werder*", "HSV*", "Holzbein Kiel", "1. FC Süderbrarup", "weitere Teams", ...
    };
    
    

    Dann frage ich mich noch 2 Dinge:

    1. sind 20 Zeichen eigentlich mit oder ohne Nullterminator gemeint?
    2. Du hast jetzt ein struct team {...}; gemacht. Ist vielleicht typedef struct {...} team; gemeint? Naja, wahrscheinlich egal.

    [*]: Lokalpatriotismus + Wunschdenken 😉



  • Dieser Beitrag wurde gelöscht!


  • @Progkid sagte in Programmierung in C Aufgabe:

    Eigentlich sind die glaube ich gleich, aber wenn ich die Aufgabe lese dann denke ich, ich soll typedef struct {...} team; nutzen. Aber dann muss ich struct team liga [18]; zu team liga [18]; ändeern oder ?

    Du kannst auch beides machen: typedef struct team {...} team;. Dann funktionieren danach sowohl team mein_team; als auch struct team mein_team;.

    Ob du es machen sollst - keine Ahnung und vermutlich auch egal. Je nachdem, wie ihr das bisher so gemacht habt.

    Mit #define ... habe ich nicht verwendet, da wir das im Studium noch nicht benutzt haben.

    Naja, aber die Zahlen (womöglich auch mehrfach) einfach so in den Quelltext zu schreiben, ist extrem schlechter Stil und überhaupt nicht wartungsfreundlich. Lies dir mal https://de.wikipedia.org/wiki/Magische_Zahl_(Informatik)#Magische_Zahlen_in_Code durch.

    Du musst es auch nicht mit #define machen. Du kannst stattdessen auch enum { konstante=Wert} verwenden. Ist vermutlich eh schöner als #define. In C++ ginge auch einfach ein einfaches const int MAX_BLUBB = 1234;.

    Das mit Nullterminator weiß ich auch leider nicht, aber wird das ein unterschied machen bei den Namen? Ich glaube es gibt nur ein Mannschaft mit 19 Zeichen.

    Dann ist es doch egal. Ich denke, das passt schon so.



  • Okey, alles klar, Danke Ihnen sehr !!
    Ich mache weiter mit der Aufgabe und wenn ich Schwierigkeiten habe, wende ich mich nochmal hier.
    Vielen vielen Dank



  • @Progkid Übersetze mal „kurze Ganzzahl“ ins englische.

    Dann hast du den Typ für deine Member.



  • ow ja stimmt, es soll short sein, aber soll ich char oder short nutzen? Denn char ist ja 1 Byte und short 2 Byte. Vielen Dank für den Hinweis !!



  • Dieser Beitrag wurde gelöscht!


  • @Progkid Eine Schleife von 0 bis 17 sollte schon noch drin sein.



  • @Progkid sagte in Programmierung in C Aufgabe:

    aber soll ich char oder short nutzen?

    Kurze Ganzzahl würde ich als short int interpretieren.

    Denn char ist ja 1 Byte und short 2 Byte. Vielen Dank für den Hinweis !!

    Nein. Es gilt sizeof char == 1 und short int ist mindestens 16 Bits groß (darf auch größer sein!). Siehe https://en.cppreference.com/w/c/language/arithmetic_types - wenn du auf genau 1 oder genau 2 Bytes (8/16 Bits) gehen willst, müsstest du int8_t/int16_t nehmen. Siehe https://en.cppreference.com/w/c/types/integer

    Jetzt hänge ich an dieser Aufgabe. Ich verstehe nicht wirklich was zu machen ist oder wie es zu machen ist.

    Schreiben Sie ein Unterprogramm namens neue_saison.

    Das hast du erledigt.

    An das Unterprogramm soll anschließend ein Zeiger auf liga sowie mannschaften übergeben werden.

    Du hast aktuell keinen Paramter übergeben. Schau dir an, wie du Parameter übergeben kannst.

    Die Funktion hat keinen Rückgabewert.

    Ist bei dir schon erledigt.

    Die Aufgabe des Programms ist es...

    Naja, da hast du ja noch gar nichts von gemacht. Es ergibt keinen Sinn, dir das jetzt hinzuschreiben, du musst das schon selber versuchen bzw. wenn du Probleme hast, genau nachfragen, aber nicht so.



  • An das Unterprogramm soll anschließend ein Zeiger auf liga sowie mannschaften übergeben werden.

    Das verstehe ich gar nicht. soll es in den Parameter von void neue_saison() sein?
    also

    void neue_saison(team*liga, char*manschaft)
    {
    
    }
    
    


  • @Progkid sagte in Programmierung in C Aufgabe:

    Das verstehe ich gar nicht. soll es in den Parameter von void neue_saison() sein?

    Wenn das Unterprogramm die Daten übergeben bekommt, wäre es sinnvoll, wenn es diese auch entgegen nimmt.

    void neue_saison(teamliga, charmanschaft)

    Zur Lesbarkeit sollten beim * noch ein Leerzeichen sein.

    void neue_saison(team *liga, char *mannschaft)

    Vielleicht hast du schon mal was von Pointern und Arrays mitbekommen.
    Zumindest stellt man solche Aufgaben nicht im ersten Kapitel.



  • Dieser Beitrag wurde gelöscht!

Anmelden zum Antworten