Hilfe in C Programm (verkettete Liste)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hilfe in C Programm (verkettete Liste)

    Hallo,

    wollt mich mal kurz vorstellen bevor ich euch mit meinen Problemen bewerfe :)
    Bin der Christian 24 aus Großraum Oldenburg. Studiere Elektrotechnik im Dualen system....

    aus meinem Studium heraus erschließt sich nun auch meint problem... es handelt sich um vorlesung in strukt. programmierung.... in c

    habe mir da mal ein programm zusammen gebastellt das kfz's in eine verkettete liste verpacken soll wenn ich nun das programm copiliere schmeißt der mir nen fehler und ich kann mir nicht ganz erklären wieso
    ich denke es ist erstmal am einfachsten ich poste mal den code und makiere die stelle wo mir mein compiler sagt bis hier und nich weiter
    wär für jede hilfe dankbar

    Quellcode

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <string.h>
    4. #define MAX 30
    5. struct kfz{
    6. int kfznr;
    7. char marke[MAX];
    8. char modell[MAX];
    9. float maschine; //in liter
    10. int hubraum; //in ccm
    11. int ps;
    12. float verbrauch;
    13. int sitze;
    14. struct kfz *nextkfz;
    15. };
    16. struct kfz stammpkw, *kopf, ende;
    17. void anzeige(char titel[],int seitensprung){
    18. int a=0, b=0, c=0, d=0, e=0; //Zählervariablen
    19. if(seitensprung <1) //
    20. for(e=0;e<20;e++){ //Seite räumen
    21. printf("\n"); //
    22. };
    23. for(a=0;a<4;a++){
    24. for(b=0;b<40;b++)
    25. printf("/");
    26. for(b=0;b<40;b++)
    27. printf("\\");
    28. };
    29. printf("------------------------------- %s --------------------------------", titel);
    30. for(c=0;c<4;c++){
    31. for(d=0;d<40;d++)
    32. printf("\\");
    33. for(d=0;d<40;d++)
    34. printf("/");
    35. };
    36. }
    37. void kfzanzeigen(){
    38. char titel[20];
    39. strcpy(titel, "KFZ's anzeigen "); //Anzeige Ueberschrift
    40. anzeige(titel,0);
    41. printf("%s", stammpkw.marke);
    42. return;
    43. }
    44. void kfzhinzu(){
    45. char titel[20];
    46. strcpy(titel, "KFZ hinzufuegen"); //Anzeige Ueberschrift
    47. anzeige(titel,0);
    48. int kfznr;
    49. char marke[MAX];
    50. char modell[MAX];
    51. float maschine; //in liter
    52. int hubraum; //in ccm
    53. int ps;
    54. float verbrauch;
    55. int sitze;
    56. printf("\nBitte geben Sie die geforderten KFZ Daten ein:");
    57. printf("\n\nBitte geben Sie die Marke ein:");
    58. gets(marke);
    59. printf("\nBitte geben Sie das Modell ein:");
    60. gets(modell);
    61. printf("\nBitte geben Sie die Größe der Maschine in Litern an(Format 1.4):");
    62. scanf("%f",&maschine);
    63. printf("\nBitte geben Sie den Hubraum in ccm an:");
    64. scanf("%d",&hubraum);
    65. printf("\nBitte geben Sie die PS des KFZ's ein:");
    66. scanf("%d",ps);
    67. printf("Bitte geben Sie die den Verbrauch in Liter an(Format 7.6):");
    68. scanf("%f",verbrauch);
    69. printf("Bitte noch schnell die Anzahl der Sitze dann sind wir durch:");
    70. scanf("%d",&sitze);
    71. [color=#ff0000][b][size=14]kfz new_kfz = malloc(sizeof(struct kfz));[/size][/b][/color]
    72. new_kfz->marke=marke;
    73. new_kfz->modell=modell;
    74. new_kfz->maschine=maschine;
    75. new_kfz->hubraum=hubraum;
    76. new_kfz->ps=ps;
    77. new_kfz->verbrauch=verbrauch;
    78. new_kfz->nextkfz=stammpkw->nextkfz;
    79. stammpkw->nextkfz=new_kfz;
    80. return;
    81. }
    82. void kfzentfernen(){
    83. char titel[20];
    84. strcpy(titel, " KFZ entfernen"); //Anzeige Ueberschrift
    85. anzeige(titel,0);
    86. return;
    87. }
    88. void auswahlmenue(){
    89. char titel[20];
    90. int auswahl=0;
    91. strcpy(titel, " Auswahlmenue "); //Anzeige Ueberschrift
    92. anzeige(titel,1);
    93. printf("\n\n [1] KFZ's anzeigen\n"
    94. " [2] KFZ hinzufuegen\n"
    95. " [3] KFZ entfernen\n"
    96. "\n Bitte Option auswaelen: ");
    97. scanf("%d", &auswahl);
    98. if(auswahl>=0 && auswahl<=3){
    99. switch(auswahl){
    100. case 1 : kfzanzeigen(); break;
    101. case 2 : kfzhinzu(); break;
    102. case 3 : kfzentfernen(); break;
    103. }
    104. }
    105. }
    106. void main(){
    107. kopf = &stammpkw; //Deklaration des Anfangs
    108. stammpkw.nextkfz=&ende;
    109. ende.nextkfz = 0; //Deklaration des Endes
    110. stammpkw.kfznr= 00001;
    111. strcpy(stammpkw.marke, "Volkswagen");
    112. strcpy(stammpkw.modell, "Polo Variant");
    113. stammpkw.maschine = 1.6;
    114. stammpkw.hubraum = 1590;
    115. stammpkw.verbrauch = 8.6;
    116. stammpkw.ps = 75;
    117. stammpkw.sitze = 5;
    118. auswahlmenue();
    119. }
    Alles anzeigen


    bitte meckert nicht zuviel über meine schreibweise.... da besteht mit sicherheit noch VIEL kürzungsbedarf aber ich denke solange ich die grundlagen nich kapiere bringt das alles nichts....

    hier noch mal der fehler den der compiler rausschmeißt

    Running "C:\cygwin\bin\make.exe -f Makefile CONF=Debug" in C:\Dokumente und Einstellungen\siemek privat\Eigene Dateien\NetBeansProjects\KFZ_Verwaltung

    /usr/bin/make -f nbproject/Makefile-Debug.mk SUBPROJECTS= .build-conf
    make[1]: Entering directory `/cygdrive/c/Dokumente und Einstellungen/siemek privat/Eigene Dateien/NetBeansProjects/KFZ_Verwaltung'
    /usr/bin/make -f nbproject/Makefile-Debug.mk dist/Debug/Cygwin-Windows/kfz_verwaltung.exe
    make[2]: Entering directory `/cygdrive/c/Dokumente und Einstellungen/siemek privat/Eigene Dateien/NetBeansProjects/KFZ_Verwaltung'
    mkdir -p build/Debug/Cygwin-Windows
    rm -f build/Debug/Cygwin-Windows/Verwaltung_Main.o.d
    gcc -c -g -MMD -MP -MF build/Debug/Cygwin-Windows/Verwaltung_Main.o.d -o build/Debug/Cygwin-Windows/Verwaltung_Main.o Verwaltung_Main.c
    Verwaltung_Main.c: In function `kfzhinzu':
    Verwaltung_Main.c:86: error: `kfz' undeclared (first use in this function) hier ist die oben makierte zeile gemeint
    Verwaltung_Main.c:86: error: (Each undeclared identifier is reported only once
    Verwaltung_Main.c:86: error: for each function it appears in.)
    Verwaltung_Main.c:86: error: parse error before "new_kfz"
    Verwaltung_Main.c:88: error: `new_kfz' undeclared (first use in this function)
    Verwaltung_Main.c:95: error: invalid type argument of `->'
    Verwaltung_Main.c:96: error: invalid type argument of `->'
    Verwaltung_Main.c: In function `main':
    Verwaltung_Main.c:132: warning: return type of 'main' is not `int'
    make[2]: *** [build/Debug/Cygwin-Windows/Verwaltung_Main.o] Error 1
    make[2]: Leaving directory `/cygdrive/c/Dokumente und Einstellungen/siemek privat/Eigene Dateien/NetBeansProjects/KFZ_Verwaltung'
    make[1]: *** [.build-conf] Error 2
    make[1]: Leaving directory `/cygdrive/c/Dokumente und Einstellungen/siemek privat/Eigene Dateien/NetBeansProjects/KFZ_Verwaltung'
    make: *** [.build-impl] Error 2

    Build failed. Exit value 2.

    danke für eure hilfe mfg

    christian
  • Also erstmal ein Hinweis: Bitte um code immer die [ code ] Tags verwenden (ohne die Leerzeichen).

    Dann ist KFZ hier kein Typ. Doch du hast richtig gelesen :). Du hast ein struct kfz aber keinen Typen kfz.
    Deswegen musst du entweder schreiben: struct kfz new_kfz oder, was besser ist:

    Quellcode

    1. typedef struct sKFZ
    2. {
    3. }kfz;

    Damit definierst du kfz als Typen und die Fehlermeldung tritt nicht mehr auf.
    MfG

    ps.:

    Es hilft immer, solchen Code auf minimal zu reduzieren, um den Fehler zu finden.:
    Sometimes it pays to stay in bed in Monday, rather than spending the rest of the week debugging Monday's code. ~Dan Salomon

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von superuser ()