brauche hilfe mit vektor funktion
-
hallo zusammen,
ich soll ein programm schreiben, dass die dimension und den inhalt von vektoren aus einer datei ausließt und dann die verschiedenen vektor-rechenoperationen durchführen. fürs ein- und auslesen habe ich funktionen für matrizen aus dem vorleseungsskript übernommen.
leider starten die beiden funktionen übrhaupt nicht.brauche dingend hilfe.....
#include <iostream> using namespace std; #include <fstream> using namespace std; double eingabe ( double *(&), double *(&) , int &, int & ,int & ); double ausgabe ( double * , double * , double * ,int , int , int ); int main(){ double a,b,c; int m,n,k; double eingabe(double * (&a) , double * (&b) , int &m, int &n ,int &k); double ausgabe(double *a , double *b , double *c , int m, int n , int k); return 0; } double eingabe ( double * (&a) , double * (&b) , int &m, int &n ,int &k ) { int i ,j ,l; ifstream datin; char filin [20]; do { cout << "Namen fuer die Eingabedatei eingeben : " ; cin >> filin ; datin.clear();datin.open(filin) ; if ( datin.fail()) cerr << "Datei " << filin << " kann nicht geoeffnet werden ! ! \n" ; } while (datin.fail()) ; datin >> m >> n >> k ; // Erste Zeile der Inputdatei ! a = new double [m*n ] ; // Reserviere Speicherplatz fuer a for ( j=0; j<n ; j++){ for ( i=0; i<m; i++){ datin >> a[i*n+j] ;}} b = new double [ n*k ] ; // Reserviere Speicherplatz fuer b for ( l=0; l<k ; l++){ for ( j=0; j<n ; j++){ datin >> b[j*k+ l] ;}} datin.close(); } // ==> Ende: eingabe double ausgabe ( double *a , double *b , double *c , int m, int n , int k ) { int i , j , l ; ofstream datout ; char filout[20]; do { cout << "Namen fuer die Ausgabedatei eingeben : " ; cin >> filout ; datout.clear(); datout.open(filout) ; if ( datout.fail() ) cerr << "Datei " << filout << " kann nicht geoeffnet werden ! ! \n" ; } while ( datout.fail()) ; datout << "Ausgangsvektor a und b : \n\n" ; for ( i =0; i<m; i++) { for ( j=0; j<n ; j++) datout << a [i*n+j] << ' ' ; datout << " \n " ; } datout << "\n\n" ; for ( j=0; j<n ; j++) { for ( l=0; l<k ; l++) datout << b[j*k+l] << ' ' ; datout << " \n " ; } datout << "\n\n" ; datout << "Ergebnismatrix c = a * b : \n\n" ; for ( i=0; i<m; i++) { for ( l=0; l<k ; l++) datout << c [i*k+l] << ' ' ; datout << " \n " ; } datout . close() ; } // ==> Ende: ausgabe
-
Bitte vernünftige Fehlerbeschreibung abgeben. Und Code zumindest mal grundlegend aufräumen. Wenn es schon so losgeht:
#include <iostream> using namespace std; #include <fstream> using namespace std;Kommt dir das nicht ein bisschen komisch vor? Dieser Code sieht aus wie hingekotzt, denn das ist er auch. Wie will man da noch Hilfe leisten, wenn eindeutig der Urheber einfach nur ein Schlamper ist?
Dein Code wirft bei mir 8 Warnungen, die allesamt schwerwiegende Fehler sind. Aktiviere bei dir selber immer alle Compilerwarnungen.
Du hast keine Ahnung über die Grundlagen von Funktionen. Wenigstens das dritte Kapitel in einem C++-Buch sollte man mal gelesen haben, bevor man hier völlig verzweifelt aufschlägt.
new[] nutzt man in C++ nie. Und falls doch, dann bestimmt nicht auf diese Weise. Viel zu fehleranfällig. Nutze std::vector. Dann entfallen ein dutzend weitere Fehlerquellen.
Die Dateiaktionen sind mehr als ungewöhnlich. Sie scheinen auf den ersten BLick nicht direkt falsch, aber man könnte es sehr viel eleganter machen. Wieder: Wenigstens mal ein Grundlagenbuch lesen (siehe meine Signatur).
Hast du den Code aus verschiedenen Quellen zusammenkopiert, ohne ihn zu verstehen? Sieht ganz danach aus. Siehe auch obiger Kommentar über Schlamperei. Verstandloses Copy&Paste ist eine Todsünde beim Programmieren, ganz besonders für Anfänger. Code ist Logik pur. Du musst genau wissen, welches Zeichen du wo und warum setzt.