Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Programm klar machen, dass Eingabedatei eine Matrix enthält

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
08.05.2004, 16:45 Uhr
Scyx



Hallo!
Es geht darum, ich will ein Programm mithilfe eines template veranlassen eine Matrix aus einer Datei einzulesen, sie nach gewissen Werten (int und string) durchsuchen und diese dann zu ersetzen.
Jetzt weiss ich allerdings nicht, wie ich das in dem template machen soll, dass das Programm weiss, es bekommt jetzt eine Matrix, soll zuerst die 1 Zeile Spalte für Spalte durchlaufen und ersetzen, dann in die 2te usw. usw.
Das durchlaufen Spalte für Spalte macht mir keine Probleme wenn's einzelne Zeichen sind. Bei strings weiss ich aber nicht ob das so einfach möglich ist.
Ich dachte mir eine äußere for-Schleife für die die Zeilen durchlaufen und dann eine innere für die Spalten. Wenn's dann auf einen Wert trifft (a=value[j]) soll es "value" mit "replace" ersetzen.

Wenn einer versteht was gemeint ist :O) und weiss wie sich das realisieren lässt, bitte meldet euch!!!
Bin um jede konstruktive Antwort dankbar

Dieser Post wurde am 08.05.2004 um 16:46 Uhr von Scyx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.05.2004, 16:51 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


wenn du mit nem stream einliest spiel der datentyp keine rolle, der nimmt automatisch den an den du ihm zu lesen übergibst...

allerdings ist spaltenweises einlesen die ungünstigeste variante... du solltest zeilenweise einlesen...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.05.2004, 17:01 Uhr
Scyx



Mit 'nem Stream einlesen? Geht das damit:

C++:
#include <sstream>
...

string s;

T daten;

...

// Eingabe-Stringstream deklarieren und mit s initialisieren

istringstream istr(s);

// Wie gewohnt mit Streams umgehen

istr >> daten;

????

Woher weiss der Compiler denn, dass [i] die Zeilen und [j] die Spalten sein sollen?
Ist das per Standard definiert?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.05.2004, 17:04 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



C++:
#include <iostream>
#include <fstream>
#include <string>

int main(){
std::string abc//oder in was auch imemr du einlesen willst
std::ifstream in(filename);
if(!in.is_open())return 0;
std::in>>abc;
in.close();
std::cout<<abc<<std::endl;
}


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 08.05.2004 um 17:05 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.05.2004, 17:19 Uhr
Scyx



std::string abc, ist dabei "abc" der Dateiname, oder eine Variable?
Vorallem, woher weiss das Programm dass es eine Matrix ist?
Das will mir einfach nicht in den Kopf...

Ich entschuldige mich jetzt schon für evtl. dumm klingende Fragen, aber mir fällt es sehr schwer das Ganze zu verstehen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
08.05.2004, 17:37 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Vorallem, woher weiss das Programm dass es eine Matrix ist?


an der stelle weiss das programm das noch nicht
musst du halt in ner schliefe laufen lassen....

abc ist einfach nur eine variable in die du einliest... wenn du ne matrix machen willst kannst du einfach ein array anlegen (oder du nimmst einen std::vector) und liest dann halt zeile für zeile aus der datei ein....


also um das mal zu skizzieren
angenommen matrix ist ein 2d array wobei


C++:
int i,j,x,y;
double **mat; //hier speicher für die matrix allokieren so wie du es in deinem andern beispiel gemacht hast
for(i=0;i<y;++y)for(j=0;j<x;++j)in>>mat[j][i];



wie genau du da was einliest hängt an sonsten stark davon ab wie deine datei aussieht aus der du einliest
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
08.05.2004, 18:25 Uhr
Scyx



Also der Inhalt der Datei soll in der 1sten Zeile den Datentyp (int oder string) enthalten und dann soll in der 2ten Zeile eine 20x20 Matrix folgen.
Die Dimensionen und Längen sind somit klar, aber was mir fehlt ist eine Lösung für das Problem des Einlesens.

Was mir auch noch Angst macht, ist, dass ich noch nicht genau weiss, was ich wo deklarieren usw. muss...
Da hab ich den Dreh einfach noch nicht raus.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
08.05.2004, 19:06 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


öhm wie meinst du das mit int oder string... willst du eine gemischte matrix anlegen?(dann ist das ja schon gar keine matrix mehr sondern eher sowas wie eine sammlung von datensätzen oder soll am ende die ganze matrix aus ints oder string bestehen?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
08.05.2004, 19:13 Uhr
Scyx



Die Datei sieht (hier z.B. genommen 4X4) so:
int
4 3 5 6
3 1 9 5
0 1 4 -5
-2 0 0 0

oder so aus
string
Willie Maja Ernst Hugo
Maja Maja Cleo Xavier
Egon Maria Flip Harry
Waldemar Sabine Ingrid Otto

Dann soll nach 'nem Wort oder 'ner Zahl gesucht und diese dann durch ein Wort oder eine Zahl ersetzt werden. Es sind aber immer nur int oder string.
Hoffe dass ich's etwas klarer gemacht habe. Zermarter mir schon die ganze Zeit den Kopf wie ich das hinkriegen könnte...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
09.05.2004, 01:57 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


in etwa in der art


C++:
template <class Typ> class CMatrix{

    private:
        std::vector<std::vector<Typ> > matrix; //oder halt mit nem 2darray von hand allokieren

    public:
        CMatrix(std::vector<std::vector<Typ> >);
        CMatrix(CMatrix&);        
        CMatrix();        
        CMatrix(char*);        

        void operator=(CMatrix& m);
        bool operator==(CMatrix& m);
        std::vector<Typ>& operator[](int& index);

        CMatrix operator+(CMatrix& m);
        CMatrix operator-(CMatrix& m);
        CMatrix operator*(Typ& s);
        CMatrix operator*(CMatrix& m);
        CMatrix operator/(Typ& s);
        
        void Matrix_ausgeben();

};


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: