struct und liste....suchen



  • hi leute..ich hab ein kleines prog geschrieben zu struct und listen!!
    ich will nun eine suchfunktion bauen!! könntet ihr mir da helfen?
    vielen dank im vorhinein!

    mfg nike

    [cpp]
    #include <string.h>
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <assert.h>
    #include "cd.h"

    int main()
    {
    //das wär, wenn du schon ne normale Variable hast, die bereits angelegt ist, wie zb int i; und du dann einen Zeiger int* pint nimmst und auf i zeigen lässt: pint=&i;

    // 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 cd* Nr1=new cd;
    // 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 cd* Nr2=new cd;

    bool cds_sind_gleich=false;

    Nr1->tracks=14; // entspricht (*Nr1).tracks=14;
    Nr1->laenge=57.3;
    strcpy(Nr1->titel,"Supa Italia vol. 11");
    ausgabe(Nr1);
    speicher_in_datei(Nr1);

    Nr2->tracks=12;
    Nr2->laenge=56.0;
    strcpy(Nr2->titel,"Bravo Hits 2003");
    ausgabe(Nr2);
    speicher_in_datei(Nr2);

    cds_sind_gleich=vergleichen(Nr1, Nr2);
    assert(cds_sind_gleich==false);

    if(cds_sind_gleich==true)
    {
    printf("Die Cds sind gleich\n\n");
    }
    else
    {
    printf("Die Cds sind nicht gleich\n\n");
    }

    printf("\n");

    Nr1->tracks=14;
    Nr1->laenge=57.3;
    strcpy(Nr1->titel,"Supa Italia vol. 11");
    ausgabe(Nr1);
    speicher_in_datei(Nr1);

    Nr2->tracks=14;
    Nr2->laenge=57.3;
    strcpy(Nr2->titel,"Supa Italia vol. 11");
    ausgabe(Nr2);
    speicher_in_datei(Nr2);

    cds_sind_gleich=vergleichen(Nr1, Nr2);
    assert(cds_sind_gleich==true);

    if(cds_sind_gleich==true)
    {
    printf("Die Cds sind gleich\n\n");
    }
    else
    {
    printf("Die Cds sind nicht gleich\n\n");
    }

    printf("\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;
    }

    -------------------------------------------------------

    cd.h:
    struct cd
    {
    int tracks;
    float laenge;
    char titel[50];
    };

    void ausgabe(cd *print);
    bool vergleichen(cd *Nr1, cd *Nr2);
    void speicher_in_datei(cd *save);

    -------------------------------------------------------

    speichern.cpp

    #include <string.h>
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <fstream>
    using namespace std;
    #include <iostream>
    #include "cd.h"

    bool FileExists(std::string & rFileName);

    void speicher_in_datei(cd *save)
    {
    ofstream file;
    string dateiname;

    // Dateiname festlegen
    dateiname="Cd-Datenbank.txt";

    // Überprüfen ob die Datei schon existiert
    if(FileExists(dateiname))
    file.open(dateiname.c_str(), ios_base::app);
    else
    file.open(dateiname.c_str(), ios_base::out);

    // Wenn file geöffnet
    if(file.is_open())
    {
    file<<save->titel<<endl;
    file<<save->tracks<<endl;
    file<<save->laenge<<endl;
    }

    // file schließen
    file.close();
    }

    // Funktion FileExits: überprüft ob die Textdatei existiert oder nicht
    bool FileExists(std::string & rFileName)
    {
    FILE *pFile;
    bool bExists;

    pFile = fopen(rFileName.c_str(), "r");

    bExists = pFile != NULL;

    if(NULL != pFile)
    {
    fclose(pFile);
    }
    return bExists;
    }

    ----------------------------------------------------------------------

    ausgabe.cpp

    #include <string.h>
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include "cd.h"

    void ausgabe(cd *print)
    {
    printf("Titel: %s",print->titel);
    printf("\nTracks: %d",print->tracks);
    printf("\nLaenge: %0.1f\n\n",print->laenge);
    }

    -----------------------------------------------------------------------

    vergleichen.cpp

    #include <string.h>
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include "cd.h"

    bool vergleichen(cd *Nr1, cd *Nr2)
    {
    if(Nr1->tracks==Nr2->tracks)
    {
    if(Nr1->laenge==Nr2->laenge)
    {
    if((strcmp(Nr1->titel,Nr2->titel)==0))
    {
    return true;
    }
    }
    }

    return false;

    }



  • Bitte keine C++-Fragen hier posten, hier gehts um ANSI-C. Was ist dein konkretes Problem? Was hast du schon probiert?



  • ich weiß nicht genau wie ich die sortierung proggen soll!???
    bitte verschieb meine frage ins c++ forum!!danke

    mfg


Anmelden zum Antworten