0 Daumen
1,3k Aufrufe

Ich habe folgende Aufgabe vorliegen und weiß leider nicht wie ich anfangen soll.

Problem:

Ich muss mit Typedef die Definition für einen Strukturtyp erstellen.

Die Struktur soll 3 Komponenten haben

Einen Integer-Wert, ein Datenfeld vom Typ int mit der Länge 5,

Ein Datenfeld vom Typ char mit der Länge 7.


Ist hiermit gemeint int=... , int=5 und char mit einem Wort in der Länge von 7 Buchstaben?

Avatar von

3 Antworten

+2 Daumen
 
Beste Antwort

Hallo Tim,

Ja - es würde schon drauf hingewiesen: es ist ganz ganz wichtig, dass Du bei solchen Fragen erwähnst in welcher Programmiersprache Du das gerne hättest!

In C würde es so aussehen:

typedef struct {
int hinz; // Einen Int Wert,
int kunz[5]; // ein Datenfeld vom Typ int mit der Länge 5,
char text[7]; // Ein Datenfeld vom Typ char mit der Länge 7
} TimsStruct;

Avatar von

Genau es geht um die Programmiersprache C, tut mir leid ich hatte es ein bisschen eilig.

Vielen Dank deine Antwort hat mir sehr weitergeholfen!

+2 Daumen

Der Reihe nach:

"Typedef die Definition für einen Strukturtyp erstellen"

C-Implementierung:

typedef struct {
//...
} NameDerStruktur;
"Struktur soll 3 Komponente haben"

typedef struct {
// hier kommt was hin
// hier auch
// hier ebenfalls
} NameDerStruktur;
"Einen Int Wert, ein Datenfeld vom Typ int mit der Länge 5"

int var;
int datenfeld[5];
"Ein Datenfeld vom Typ char mit der Länge 7."

char datenfeldChar[7];
Das nun in die Struktur einfügen:

typedef struct {
int var;
int datenfeld[5];
char datenfeldChar[7];
} NameDerStruktur;
Fertig!

Eine mögliche (schlechte) Implementierung an einem Beispiel:

#include <stdio.h>
#include <string.h>

typedef struct {
    int alter;
    int koerper[5];
    char name[7];
    } person;

int main()
{
   
    person peter, ralf;
   
    peter.alter = 42;
    strcpy(peter.name, "Peter");
    peter.koerper[0] = 23;

    printf(" Alter: %d \n", peter.alter);
    printf(" Name: %s \n", peter.name);
    printf(" Koerper: %d \n", peter.koerper[0]);
   
    return 0;
}


Ein frohes Fest!

Avatar von

Vielen Dank für die ausführliche Antwort!

Ich müsste bei der zweiten Teilaufabe noch eien Vatiable mit dem in Aufgabenteil a) erstellen Strukturtyp definieren. ( Heißt da kann ich mir jetzt eine Variable aussuchen?)

Diese Variable soll bei ihrer Definition initialisiert werden. Die Integer-Komponente soll mit der ersten Ziffer ihrer Matrikelnummer initialisiert werden ( sagen wir mal die 7)

Das Intger-DAtenfeld solll mit den restlichen Ziffern ihrer Matrikelnumer initialisisert werden ( 65432)

Das Char Feld soll mit ihrer Matrikelnummer als Zeichenkete intiialisiert werden.

Der Name der Variablen soll ein Wort sein, das in der Syntax laut Aufgabe 1a) verwendet werden darf.

Das kannst du dann in etwa so machen, wie in meinem letzten Beispiel. Wichtig ist, dass du auf die Arraygrenzen achtest! Ersetz dieses Peter aus dem Beispiel und füge die richtigen Merkmale hinzu (Die aus deiner Aufgabe, das mit Peter war einfach nur ein Exemplar...)

ich blick da nicht so ganz durch also will er es so haben:

typedef struct {
    int Matrikelnummereins;
    int Matrikelnummerrest[5];
    char Zeichenkette[7];
    } matrikelnummer;
person TimderStudent;
   
    TimderStudent.Matrikelnummereins = 7;
    strcpy(TimderStudent.name, "Tim");
    TimderStudent.Matrikelnummerrest[5] = 654321;

    printf(" Matrikelnummereins: %d \n", TimderStudent.Matrikelnummereins);
    printf(" Name: %s \n", TimderStudent.name);
    printf(" Matrikelnummerrest: %d \n", TimderStudent.Matrikelnummerrest[5]);


Und bei der Zeichenkette wie mache ich das? Bin mir ziemlich sicher, dass meine Version falsch ist.

Hey,

ein paar Fehler sind enthalten, also du musst, wenn du strcpy() nutzt die Bibliothek string.h einfügen. Außerdem ist deine Struktur falsch betitelt. Deine Struktur heißt matrikelnummer, du möchtest aber, dass die person heißt, richtig wäre also:

typedef struct { 
    int Matrikelnummereins;
    int Matrikelnummerrest[5];
    char name[7];
    } person;

Kleiner Tipp by the way, die Variablenbenennung solltest du etwas anders wählen, da kann man sich schnell verlesen, was zu Problemen führt :)


und vorher noch das hier einfügen:

#include <string.h>

Vielen dank für deine schnelle Antwort!


Bei der Zeichenkette mit char muss ich da string einfügen ?

So wie es in der Aufgabenstellung stand?..

Ich kenne die Aufgabenstellung jetzt nicht im Detail, aber ausgehend von deiner Beschreibung (oben) hast du alles drin.

Bei der Zeichenkette mit char muss ich da string einfügen ?

Das darf man nicht in den gleichen Topf werfen. Also du definierst ein char, das kann von mir aus string bzw str heißen. Die Benennung ist egal der Datentyp aber nicht.

char string[7]; 
aber die Benennung string ist irgendwie nichtssagend, daher wäre es sinnvoller einen "richtigen" Namen für die Variable zu verwenden :)

Frage, warum verwendest du überhaupt ein Struct? Also kannst du dir vorstellen, warum so eine Struktur sinnvoll ist?

PS: Programmierst du parallel irgendwas mit Java?

Super vielen dank nochmal!

Ja mit typedef kann man doch eigene variablen definieren und Programme ggf kürzer schreiben.

Ja meine Klausur ist ende Januar und ich bin gerade noch dabei die Programmiersprache besser kennen zu lernen.

Java gehört da auch dazu jedoch bin ich nicht so sehr damit vertraut ( bin gerade mal bei Klassen und Objekte)

Nochmals vielen Dank für deine Geduld und deine hilfreichen Antworten!

Hab ichs mir fast schon gedacht, wenn man Java und C parallel lernt kann man mal etwas durcheinander kommen mit chars und Strings. String ist ja ein Objekt, das man aus Java kennt.

Kurzum: Der große Vorteil von Strukturen ist, dass sie im Speicher als ein Element auftreten, sodass wenn man seinen Speicher kennt man genau sagen kann wo die nächste Variable im Speicher angelegt ist. In deiner Struktur sind einige Variablen, die im speicher auch in genau der gleichen Reihenfolge (da es ja eine Struktur ist) auch so vorkommen. Du könntest das natürlich auch alles ohne die Struktur bauen, aber es gibt Fälle, gerade im Hardware.Segment, da ist das schon mal ganz wichtig zu wissen, wo etwas im Speicher ist.

Super!

Vielen Dank so langsam macht alles Sinn!


LG

TimderStudent

0 Daumen
Ist hiermit gemeint int=... , int=5 und char mit einem Wort in der Länge von 7 Buchstaben?

Sicher nicht. Zum zweiten passt ein array vom Typ int, zum dritten ein array vom Typ char.

Außerdem bin ich mir sehr sicher, dass es nicht nur eine einzige Programmiersprache gibt.

Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community