Hallo,
ich muss derzeit eine Aufgabe bearbeiten und habe nur Erfahrung mit C. Die Aufgabe soll aber in C++ bearbeitet werden. Ich habe das nun fertig geschrieben und erhalte beim Kompilieren auch keinen Fehler mehr. Allerdings gibt es wohl einen logischen Fehler im Programmaufbau (z.B. array speichert Werte falsch).
Hier nun die Aufgabenstellung: Es sollen double Werte aus einer Textdatei in ein 2 dimensionales Array gespeichert werden. Anschließend sollen ein paar Berechnungen durchgeführt werden. (Mittelwert der Spalte, StandardDeviation, Ausgabe der Anzahl der Spalten/Reihen).
Vielen Dank, falls ihr mir helfen könnt![Smile :) :)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
ich muss derzeit eine Aufgabe bearbeiten und habe nur Erfahrung mit C. Die Aufgabe soll aber in C++ bearbeitet werden. Ich habe das nun fertig geschrieben und erhalte beim Kompilieren auch keinen Fehler mehr. Allerdings gibt es wohl einen logischen Fehler im Programmaufbau (z.B. array speichert Werte falsch).
Hier nun die Aufgabenstellung: Es sollen double Werte aus einer Textdatei in ein 2 dimensionales Array gespeichert werden. Anschließend sollen ein paar Berechnungen durchgeführt werden. (Mittelwert der Spalte, StandardDeviation, Ausgabe der Anzahl der Spalten/Reihen).
Vielen Dank, falls ihr mir helfen könnt
![Smile :) :)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
Code:
void readFromFile(string filename)
{
array_rows=0;
array_columns=0;
string line;
vector<string> lines;
ifstream datei(filename.c_str(),ios::in);
if (datei.is_open())
{
//An den Anfang der Datei springen
datei.seekg(0L, ios::beg);
//Solange Datei noch nicht am Ende speichern wir die Zeilen in einen Vector
while (getline (datei,line))
{
lines.push_back(line);
array_rows++;
}
datei.close();
//Array anlegen und befuellen in dem wir zuerst rausfinden, wie groß das array sein soll (mit Hilfe von stringstream)
double buffer;
stringstream ss(lines[0]);
vector<double> tokens;
while(ss>>buffer)
tokens.push_back(buffer);
array_columns=tokens.size();
// 1. Schritt: Dynamische Array von Zeigern anlegen:
array = new double*[array_rows];
// 2. Schritt: An jeden Zeiger ein Array hängen
for (int j = 0; j < array_rows ; j++)
array[j] = new double[array_columns];
//array angelegt => Werte aus Vector einspeichern
for(int i=0; i<array_rows; i++)
{
for(int k=0; k<array_columns;k++)
{
stringstream ss(lines[i]);
while(ss>>buffer)
{
array[i][k]=buffer;
}
}
}
}
}
Zuletzt bearbeitet: