Dateiarbeit/MergeSort

Von: , Frage gestellt am Di, 16. Jun 2009

Hallo,

Folgendes Programm haben wir in einer Übung ausgearbeitet...

#include <iostream>
#include <fstream>
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<<"Dateiname: ";cin>>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 < nNumbers; count++)
{
int rnd = rand()%limit;
myFile.write((char*)&rnd ,sizeof(int));
}
isOkay = true;
myFile.close();  //schließen erfolgt automatisch beim verlassen des Blocks, es schadet 
//aber auch nicht
}
return isOkay;
}
bool printTestFile(char* filename)
{
return false;
}
bool mergeSort(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.

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

Danke schonmal.

2 Antworten zu dieser Frage

  1. Antwort von nach 2 Stunden 0 hilfreich
    Re: Dateiarbeit/MergeSort

    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 ;-) 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<char *>(temps), nNumbers*sizeof(int));
    cout << nNumbers << " Werte gefunden:" << endl;  // Ausgabe
    copy(temps, temps+nNumbers, ostream_iterator<int>(cout, " "));
    return false;
    }
    


    An zusätzlichen Headern brauchst Du:
    ...
    #include <algorithm>
    #include <iterator>
    #include <string>
    ...
    


    Grüße

    CMБ

    • Antwort von nach einem Tag 0 hilfreich
      Re^2: Dateiarbeit/MergeSort

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

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!