Brauche Entscheidungshilfe für das Einlesen einer Datei



  • pippo schrieb:

    Umgesetzt hab ichs noch nicht, da ich nicht den leisesten Schimmer habe, wie ich den Code in mein Programm einbringe.

    copy & paste würde ich vorschlagen 🙄 . kannst Du ein Hello World-Programm schreiben, generieren und ausführen lassen? Dann nehme das her und ersetze einfach den Code.

    pippo schrieb:

    Wie meinst du das mit dem Schachbrett? Es ist ja nicht so, dass ich den Wert von der 1. Dimension und den der 2. addieren will und später wieder wissen, welcher als 1. dastand. Oder meinst, dass z.B. Array[1][3] das gleiche wär wie Array[3][1]? Dem ist ja nicht so, oder?

    also mal angenommen - nur angenommen - in Array[1][3] steht ein Hersteller und in Array[3][1] ein Model, was steht dann in Array[1][1] und Array[3][3]?

    pippo schrieb:

    Dass mit dem "," war ein versehen, dass es eine unterschiedliche Anzahl von Werten geben kann ist möglich, ja. Aber das sollte ja nix machen.

    Das mit dem Typ des Arrays ist eben mein Problem, ich wollte eben, dass die einzelnen Dimensionen unterschiedliche Typen sein können, aber das geht ja nicht.

    Deine Gedankengänge sind interessant. Vielleicht möchtest Du eine map von maps mit einem Vektor von Float-Vektoren.

    using namespace std;
        map< string, map< string, vector< vector< float > > > > cat;
        ifstream file("input.txt");
        for( Artikel a; file >> a; )
        {
            cat[ a.Hersteller() ][ a.Model() ].push_back( a.Werte() );
        }
    

    Isses das?

    Gruß
    Werner



  • Ich glaub ein map-container könnte das Problem ziemlich gut treffen. Konnte jetz aber leider nirgends eine Anleitung oder ähnliches finden, wie sich sowas aufbaut und wie man sowas programmiert



  • Hallo

    im Grunde auch nicht anders als mit anderen STL-Containern..
    Eine Liste der Methoden findets du zum Beispiel hier.

    bis bald
    akari



  • Werner Salomon schrieb:

    using namespace std;
        map< string, map< string, vector< vector< float > > > > cat;
        ifstream file("input.txt");
        for( Artikel a; file >> a; )
        {
            cat[ a.Hersteller() ][ a.Model() ].push_back( a.Werte() );
        }
    

    Hab mich mal etwas schlaugelesen, aber immer noch ein paar Fragen:
    1. Wie kann ich da eigentlich mehrere Werte einlesen? Muss ich da irgendwo einen Index mitlaufen lassen?.
    2. Was ist Artikel? Muss ich das vorher nicht irgendwie definieren?
    3. Wie kann ich so ne Map an eine Funktion übergeben, bzw. zurückgeben? Als Referenz?
    4. Wenn ich das so programmiere, dann kann ich schon nach Hersteller und Modell einzeln suchen lassen, oder?



  • Artikel ist die zuvor definierte Klasse. Am besten kaufst du dir ein Buch zur Thematik.



  • Vorschläge?
    Zur Zeit benutze ich "C++ in 21 Tagen" und bin bisher eigentlich super zufrieden damit. Leider kann man halt auch in einem solch großen Buch nicht auf jede Einzelheit eingehen



  • ...großen Buch...

    C++ in 21 Tagen kann man als Taschenbuch durchgehen lassen.
    Zum lernen absolut ungeeignet.



  • pippo schrieb:

    Werner Salomon schrieb:

    using namespace std;
        map< string, map< string, vector< vector< float > > > > cat;
        ifstream file("input.txt");
        for( Artikel a; file >> a; )
        {
            cat[ a.Hersteller() ][ a.Model() ].push_back( a.Werte() );
        }
    

    Hab mich mal etwas schlaugelesen, aber immer noch ein paar Fragen:
    1. Wie kann ich da eigentlich mehrere Werte einlesen? Muss ich da irgendwo einen Index mitlaufen lassen?.

    Hallo Pippo,
    Die Schleife liest alle Werte aus, die in der Datei stehen.

    pippo schrieb:

    2. Was ist Artikel? Muss ich das vorher nicht irgendwie definieren?

    siehe mein früheres Posting in diesem Thread

    pippo schrieb:

    3. Wie kann ich so ne Map an eine Funktion übergeben, bzw. zurückgeben? Als Referenz?

    Als Referenz oder per Value zurück, genau so wie ein 'int'.

    pippo schrieb:

    4. Wenn ich das so programmiere, dann kann ich schon nach Hersteller und Modell einzeln suchen lassen, oder?

    Du brauchst nicht mehr suchen - das ist eine map - Du greifst drauf zu.

    map< string, vector< vector< float > > > alleModelleEinesHerstellers = cat["EinHersteller"];
        vector< vector< float > > alleWerteDerArtikelEinesModells = alleModelleEinesHerstellers["ModellName"];
    

    Schau in Dein Tutorial zum Thema std::map.

    pippo schrieb:

    Zur Zeit benutze ich "C++ in 21 Tagen" und bin bisher eigentlich super zufrieden damit. Leider kann man halt auch in einem solch großen Buch nicht auf jede Einzelheit eingehen

    siehe dazu hier. Ansonsten ist oben rechts auf dieser Seite ein Link - da steht 'Bücher' drauf, und er führt hier hin.

    Außerdem bist Du mir noch eine Antwort schuldig

    Werner Salomon schrieb:

    pippo schrieb:

    Wie meinst du das mit dem Schachbrett? Es ist ja nicht so, dass ich den Wert von der 1. Dimension und den der 2. addieren will und später wieder wissen, welcher als 1. dastand. Oder meinst, dass z.B. Array[1][3] das gleiche wär wie Array[3][1]? Dem ist ja nicht so, oder?

    also mal angenommen - nur angenommen - in Array[1][3] steht ein Hersteller und in Array[3][1] ein Model, was steht dann in Array[1][1] und Array[3][3]?

    Gruß
    Werner



  • Taschenbuch? Das Buch hat 1000 und ich finds absolut genial. Hatte ohne Mühe ne 1 in der Informatikprüfung aus dem 1. Semester. Hab mind. schon 15 C++ Bücher gesehen und keins war nur annähernd so ausführlich und der Stoff so gut erklärt


Anmelden zum Antworten