dynamisches Feld in Datei - wo ist der Fehler



  • Dieser Beitrag wurde gelöscht!


  • Du solltest nicht einfach Sachen zusammenstückeln. Damit kommst du in C++ nicht weit.

    Vor allem solltest du C++ Mitel nutzen. Sprich ofstream und Konsorten.

    Hier habe ich das mal für ein 3 Dimensionales Array gemacht.
    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1532488-and-highlight-is-.html#1532488

    Das sollte dir eigentlich helfen auch dein Problem zu lösen.



  • Hi,
    sorry, aber merk dir erstmal folgendes:
    1.

    int main(int argc, char *argv[]) //Standardisiert, das dritte Argument soll nicht auftreten, kriegst du immer noch über syscall
    

    Außerdem hat main eine int-returnvalue!
    2. C++ -> fstream statt FILE !
    3. Alles dynamische am besten mit STL (vector), Änderungen sind später immer noch möglich und fstream ist einfach leichter zu bedienen.
    4. Mach bei for etc. Klammern

    for(...){...}
    

    , das zeugt von guten Stil und verhindert bei manchen Compilern schwer reproduzierbare Fehler.
    5. Gültigkeitsbereich von i und j 😡 nur innerhalb der for-Schleifen, danach NEU deklarieren

    Zum Test solltest du das ganze noch mit Zufallszahlen füllen.
    Angewandt auf deinen Code sieht das dann so aus:

    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <fstream>
    #include <vector>
    using namespace std;
    int main( int argc, char *argv[ ])
    {
    int ROW;
    int COLUMN;
    cout << "Bitte gib die Zeilen an!" <<endl;
    cin >> ROW;
    cout << "Bitte gib die Spalten an!" <<endl;
    cin >> COLUMN;
    //Seed rng
    srand(time(0));
    //Init ppArray
    vector< vector<int> > ppArray;
     //Spaltenfelder reservieren + initialisieren
    ppArray.resize(ROW);
    for (int i=0; i<ROW; i++)
    {
         ppArray[i].resize(COLUMN);
         for (int j=0; j<COLUMN; j++)
    	{
    		ppArray[i][j] = rand()%999; //Size down random number a bit
    	}
    }
    
    fstream f("array.txt", fstream::out);
    for (int i=0; i<ROW; i++)
      {
         for (int j=0; j<COLUMN; j++)
    	{
    		f << ppArray[i][j] << " ";
    	}
    	f << endl;
      }
    f.close();
    return 0;
    }
    

    Bei mir (x64-OpenSuSE, GCC 4) funktioniert das.

    mfg, Hans



  • Vielen Dank euch beiden 🙂



  • Kein Problem 😃
    mfg, Hans

    :schland:



  • pharmacy;


Anmelden zum Antworten