Dateiarbeit/MergeSort

Hallo,

Folgendes Programm haben wir in einer Übung ausgearbeitet…

#include 
#include 

using std::ofstream;
using namespace std;

bool createTestFile(char\* filename, int limit, unsigned int nNumbers);
bool printTestFile(char\* filename);
bool mergeSort(char\* filename);


void main()
{
 int limit = 100; //Obere Zahlengrenze
 const int maxlength = 10; //Länge Dateiname
 unsigned int nNumbers = 10; //Anzahl zufälliger Zahlen
 char filename[maxlength];
 cout\>filename;

 createTestFile(filename,limit,nNumbers); //rufe createTestFile auf

}

bool createTestFile(char\* filename, int limit, unsigned int nNumbers)
{
 bool isOkay = false;

 ofstream myFile(filename,ios::binary);

 if(myFile.is\_open()) //Wenn Datei erfolgreich geöffnet, fülle sie mit Zufallszahlen
 {
 for(unsigned int count = 0; count 



So, ... mit MergeSort werde ich noch zu kämpfen haben, weshalb ich das gleich mit einfüge. Aber zuerst ist meine Frage, wie die die Funktion printTestFile auszusehen hat. So wie das Programm jetzt steht, ist es für mich größtenteils verständlich, allerdings kann ich es noch nicht anwenden, da mir der Umgang mit myfile fremd. 

Wie kann ich denn die mit createTestFile erstellte Datei wieder öffnen, und ausgeben?

Danke schonmal.

Hallo,

Folgendes Programm haben wir in einer Übung ausgearbeitet…

C+±Übung?

bool printTestFile(char* filename)
{

return false;
}

So, … mit MergeSort werde ich noch zu kämpfen haben, weshalb
ich das gleich mit einfüge. Aber zuerst ist meine Frage, wie
die die Funktion printTestFile auszusehen hat. So wie das
Programm jetzt steht, ist es für mich größtenteils
verständlich, allerdings kann ich es noch nicht anwenden, da
mir der Umgang mit myfile fremd.

Das sieht ein wenig nach „getarntem C“ aus, von
C++ ist ausser iostream nicht so viel zusehen :wink:

Wie kann ich denn die mit createTestFile erstellte Datei
wieder öffnen, und ausgeben?

Ich würde das so machen (char * filename durch const string& fn ersetzt):

 bool printTestFile(const string& fn)
{
 ifstream myFile(fn.c\_str(), ios::binary);
 if(!myFile) return false; // Wenn Datei erfolgreich geöffnet, 

 myFile.seekg (0, ios::end); // aus der Groesse der Datei die Anzahl
 size\_t flen = myFile.tellg(); // der Zahlen drin ermitteln
 myFile.seekg (0, ios::beg);
 size\_t nNumbers = flen / sizeof(int); // Fehler: (flen % sizeof(int)) != 0

 int \*temps = new int[nNumbers]; // temp-storage fuer Zahlen
 myFile.read(reinterpret\_cast(temps), nNumbers\*sizeof(int));
 
 cout (cout, " "));
 return false;
}

An zusätzlichen Headern brauchst Du:

 ...
 #include 
 #include 
 #include 
 ...

Grüße

CMБ

Danke dir, ich werde es sobald als möglich ausprobieren und dir dann schreiben ob es funktionierte.