[C] - Datenstruktur (Definitionen und Deklarationen geben)

SuumDaHead

Mitglied
Hallo miteinander,

ich hab mal wieder ne Aufgabe, welche nun komplett anders ist, als bei den anderen Aufgaben zu dem Kapitel:
"In einem C-Programm sollen mehrere Leihwagen mit mehreren Ausleihungen verwaltet werden. Geben Sie alle erforderlichen Deklarationen und Definitionen (typdef, struct,...) an, so dass die folgenden Anweisungen formal korrekt sind."

Aufgabe:
Code:
printf("Bitte lfd. Nr. des Fahrzeugs eingeben: <%i : "ANZ_KFZ);
scanf("%i", &kfz_nr);
strcpy(kfz[kfz_nr].kfz_kennz, "RO - H 123");
printf("Bitte Datum der Erstzulassung eingeben (tt.mm.jjjj) : ");
scanf("%s", kfz[kfz_nr].erstzulassung);
printf("Bitte Fahrzeug Ident-Nummer eingeben: ");
scanf("%s", kfz[kfz_nr].ident_nr);
printf("Bitte lfd. Nummer der Ausleihung eingeben < %i:  ", ANZ_AUSL);
scanf"("%i", &ausl);
printf("Bitte Namen des Entleihers eingeben: ");
scanf("%s", kfz[kfz_nr].ausleihung[ausl].kunde.name);
printf("Bitte Rufnamen des Entleihers eingeben: ");
scanf("%s", kfz[kfr_nr].ausleihung[ausl].kunde.vorname[1]);
kfz[kfz_nr].ausleihung[ausl].kunde.anz_entleih ++;
kfz[kfz_nr].ausleihung[ausl].startKm - kfz[kfz_nr].ausleihung[ausl-1].endKm;
strcpy(kfz[kfz_nr].ausleihung[ausl].startDatum, "21.01.2009");
printf("Kfz-Kennzeichen: %15s Entleiher: %20s %20s /n", kfz[kfz_nr].kfz_kennz, kfz[kfz_nr].ausleihung[ausl].kunde.vorname[1], 
kfz[kfz_nr].ausleihung[ausl].kunde.name);[

sonst musste ich immer so einen Code schreiben (das kam mir aber einfacher vor) und Dynamisch Speicher reservieren...

wie gehe ich am besten heran ? könnt ihr mir für den Start einmal ein paar tipps geben ?
danke
 
Hallo SuumDaHead,

In deinen vorherigen Aufgaben hattest du bereits Datenstrukturen vorgegeben, jetzt musst du das umgekehrte machen.

Schau dir den Code an, was ist gegeben? Was fehlt? Dabei bemerkst du sicher als erstes mal ein paar Konstanten, die dir fehlen:
ANZ_KFZ und ANZ_AUSL

Anschliessend merkst du, dass du ein array mit dem Namen kfz haben musst das wiederum ein Array von structs ist. Dann siehst du weiter dass da verschiedene Member vorhanden sein müssen, kfz_kennz, erstzulassung und so weiter. So gehst du einfach alles durch und erstellst die entsprechenden Datentypen (in diesem Fall 2 Konstante und 3 structs) einen nach dem andern.

Grüsse
Cromon
 
ok hab da in der zwischenzeit schon mal was versucht:

Code:
#define ANZ_KFZ
#define ANZ_AUSL

typdef struct kfz{
char kfz_kennz[15];
char erstzulassung[15];
char ident_nr[15];
struct ausleihung ausl;
} kfz_nr[ ? ];

typdef struct kunde {
char vorname [15];
char name[15];
};

typdef struct ausleihung{
char datum[11];
int startKm;
int endKm;
struct kunde;
} ausl;

danke
 
Zuletzt bearbeitet:
Hi.

Zuerst mal fällt auf, das du ANZ_KFZ zwar definiert hast, aber keinen Wert zugewiesen.

Somit sieht dann deine erste Code-Zeile so aus:
C:
printf("Bitte lfd. Nr. des Fahrzeugs eingeben: <%i : ", );
Das macht offensichtlich keinen Sinn.

Versuch doch mal dein Programm zu kompilieren. Der Compiler weist dich schon auf deine Fehler hin - besser als wir dies je könnten... ;-)
 
so leute, hab mich gestern abend und heute morgen nochmal rangesetzt und glaub jetzt hab ichs:

Code:
#define ANZ_KFZ 100
#define ANZ_AUSL 100

struct s_kunde 
{
char name [20];
char vorname[2][20];
int anz_entleih;
};

struct s_ausleihung
{
char startDatum[20];
int startKm;
int endKm;
struct s_kunde kunde;
};

struct s_kfz
{
char kfz_kennz[20];
char erstzulassung[20];
char ident_nr[20];
struct s_ausleihung ausleihung[15];
};

struct s_kfz kfz[25];
 
Denkanstoss:
Der User wird augefordert einen Wert < ANZ_KFZ einzugeben. Dieser Wert wird als Index ins Array kfz verwendet. Dann wird der User aufgefordert einen weiteren Wert einzugeben. Dieses Mal < ANZ_AUSL. Dieser Wert wird als Index ins array kfz[wert1].ausleihung verwendet.

Grüsse
Cromon
 
Zurück