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!!dankemfg