problem mit listen...



  • cd_main.cpp:
    
    #include <string.h>
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <assert.h>
    #include "taeter.h"
    
    int  main()
    {
         // neuen Zeiger erstellen auf ein cd (cd*) mit dem Namen Nr1, der auf einen Speicherbereich zeigt, der gerade neu auf dem heap beschafft wurde
         struct straftaeter* Nr1=new straftaeter;
    	 straftaeter->next=new straftaeter;
         // neuen Zeiger erstellen auf ein cd (cd*) mit dem Namen Nr2, der auf einen Speicherbereich zeigt, der gerade neu auf dem heap beschafft wurde
         struct straftaeter* Nr2=new straftaeter;
    	 straftaeter->next=new straftaeter;
    
         bool cds_sind_gleich=false;
    	 bool namens_suche=false;
    
         strcpy(Nr1->name,"Hubert");
         Nr1->alter=20;   // entspricht (*Nr1).alter=20;
         strcpy(Nr1->verbrechen,"Mord an einem russisches Mafiaboss");
         Nr1->strafdauer=20.0; // in Jahre
    	 ausgabe(Nr1);
         speicher_in_datei(Nr1);
    
         strcpy(Nr2->name,"Justin");
    	 Nr2->alter=25;
         strcpy(Nr2->verbrechen,"10 Euro in der Bank gestohlen");
         Nr2->strafdauer=0.5;
    	 ausgabe(Nr2);
         speicher_in_datei(Nr2);
    
         cds_sind_gleich=vergleichen(Nr1, Nr2);
         assert(cds_sind_gleich==false);
    
         if(cds_sind_gleich==true)
         {
              printf("Die Straftaete sind identisch\n\n");
         }
         else
         {
              printf("Die Straftaete sind nicht identisch\n\n");
         }
    
         printf("\n");
    
    	 namens_suche=suchen("Hubert");
    
    	 if(namens_suche==true)
         {
              printf("gefunden\n\n");
         }
         else
         {
              printf("nicht gefunden\n\n");
         }
    
         printf("\n\nAlle Tests erfolgreich");
    
         // Speicher für Nr1 auf dem Heap freigeben
         delete Nr1;
         // Speicher für Nr2 auf dem Heap freigeben
         delete Nr2;
    
         return 0;
    }
    
    -------------------Konfiguration: struct - Win32 Debug--------------------
    Kompilierung läuft...
    cd_main.cpp
    C:\Dokumente und Einstellungen\Gerald\Eigene Dateien\Hausübung\Informatik\struct\cd_main.cpp(49) : error C2660: 'suchen' : Funktion akzeptiert keine 1 Parameter
    suchen.cpp
    C:\Dokumente und Einstellungen\Gerald\Eigene Dateien\Hausübung\Informatik\struct\suchen.cpp(16) : error C2039: 'next' : Ist kein Element von 'straftaeter'
            c:\dokumente und einstellungen\gerald\eigene dateien\hausübung\informatik\struct\taeter.h(2) : Siehe Deklaration von 'straftaeter'
    C:\Dokumente und Einstellungen\Gerald\Eigene Dateien\Hausübung\Informatik\struct\suchen.cpp(18) : error C2039: 'next' : Ist kein Element von 'straftaeter'
            c:\dokumente und einstellungen\gerald\eigene dateien\hausübung\informatik\struct\taeter.h(2) : Siehe Deklaration von 'straftaeter'
    Ausgabe.cpp
    speichern.cpp
    vergleichen.cpp
    Fehler beim Ausführen von cl.exe.
    
    struct.exe - 3 Fehler, 0 Warnung(en)
    
    ------------------------------------------------------------------------------------------
    suchen.cpp
    
    #include <string.h>
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include "taeter.h"
    
    bool suchen(char *search, struct straftaeter* straftaeter)
    {
    	while(true)
    	{
    		if((strcmp(straftaeter->name,search)==0))
    		{
    			return true;
    		}
    
    		if(straftaeter->next != NULL)
    		{
    			straftaeter=straftaeter->next;
    		}
    		else
    		{
    			return false;
    		}
    	}
    }
    
    ----------------------------------------------------------------------
    taeter.h
    
    struct straftaeter
    {
         char name[50];
         int alter;	 
         char verbrechen[50];
         float strafdauer;
         straftaeter *next;
    };
    
    void ausgabe(straftaeter *print);
    bool vergleichen(straftaeter*Nr1, straftaeter *Nr2);
    bool suchen(char *search, struct straftaeter* straftaeter);
    void speicher_in_datei(straftaeter *save);
    

    hi!!
    wie übergebe ich den pointer aus der main??? und ich weiß nicht wie ich das mit next mache!!???

    cu



  • Hallo,

    straftaeter ist der Name der Struktur, daher geht straftaeter->next auch nicht.
    Du meinst sicher Nr1->next = ...

    bring das erstmal in Ordnung, dann schaun wir weiter.

    MfG Jester



  • hi...wie mach i das dann beim suchen?? ohne next?
    cu



  • // neuen Zeiger erstellen auf ein cd (cd*) mit dem Namen Nr1, der auf 
         // einen Speicherbereich zeigt, der gerade neu auf dem heap beschafft wurde
    
         struct straftaeter* Nr1=new straftaeter;
    	Nr1->next=new straftaeter; // hier was geändert
    
         // neuen Zeiger erstellen auf ein cd (cd*) mit dem Namen Nr2, der auf 
         // einen Speicherbereich zeigt, der gerade neu auf dem heap beschafft wurde
         struct straftaeter* Nr2=new straftaeter;
    	 Nr2->next=new straftaeter; // hier ebenso
    

    Und suchen braucht hat in der Deklaration glaub 3 Parameter, nachher versuchst Du es aber mit einem aufzurufen. Das mußt Du auch noch verbessern.

    MfG Jester

    P.S.: Markier doch bitte das nächste mal die Zeilen, auf die sich die Meldungen beziehen. Das ist sonst immer so blöd, weil im Forum die Zeilennummer nicht angezeigt wird.



  • hat jemand ein tuturial zu listen und verketteten listen?
    wär klasse

    cu


Anmelden zum Antworten