Anredenbestimmung !!



  • Hallo

    Dann stelle doch mal konkrete Fragen.

    kleiner Tipp: Leg eine Klasse und speichere dort erstmal die Werte aus der datei. Dann kanst du den Namen ja mit dem Daten vergleichen.

    chrische



  • Flanders86 schrieb:

    1. bool nameGefunden==false;

    Ist ein Vergleich, keine Initialisierung der Variable.

    4. while-Schleife: solange die Datei nicht am Ende ist (datei.eof ()!=0) und nameGefunden==false

    kann man auch schreiben als !datei.eof() && !nameGefunden

    4.1. Zeile aus Datei auslesen (string zeile; datei>>zeile;)

    Hier solltest du eventuell besser getline benutzen, da dir der operator>> meines wissens nur das erste Wort aus der Zeile liefert, aber nicht die ganze Zeile.

    4.2. Zeile auseinanderschnippeln, so daß Du ID, Anrede und Name als jeweils eigene Stringvariable hast

    Hier findest du eine Uebersicht ueber die Methoden von std::string, damit kannst du dir vermutlich was zusammenbasteln, um die noetigen Werte auszuschnibbeln (z.B. mit find() und substr())

    Damit solltest du weiterkommen. Wenn noch Fragen sind, poste einfach mal den Code den du schon hast...



  • okay vielen dank erstmal, ich schau mal wie weit ich komme, danke 😉



  • 1. bool nameGefunden=false;
    2. Name eingeben (mit cin)
    3. Datei öffnen (mit ifstream)
    4. while-Schleife: solange die Datei nicht am Ende ist (datei.eof ()!=0) und nameGefunden==false
    4.1. Zeile aus Datei auslesen (string zeile; datei>>zeile;)
    4.2. Zeile auseinanderschnippeln, so daß Du ID, Anrede und Name als jeweils eigene Stringvariable hast
    4.3. Wenn der eingegebene Name gleich der Name aus dem String ist:
    4.3.1. Anrede ausgeben (bzw.: wenn Geschlecht gleich männlich, dann Ausgabe "Herr", ansonsten "Frau")
    4.3.2. nameGefunden=true
    5. datei.close ();

    Hat da niemand zufällig ne Musterlösung, ich peil gar nichts mehr 😕



  • Hast Du überhaupt schon angefangen? Zeig doch mal wie weit Du bist!

    Hausaufgaben macht hier niemand, das müsstest Du inzwischen rausgehört haben 😉



  • Hallo

    Für eine Musterlösung musst du wohl bezahlen. Dann lass dich ins Projekteforum verschieben. Ich könnte dir das machen, wenn du willst. Wenn du aber Lust hast etwas zu lernen, solltest du zeigen, was du bisher gemacht hast und dann sagen, warum du jetzt nicht weiter kommst. Anfänge wurde dir doch bereits aufgezeigt.

    chrische



  • Flanders86 schrieb:

    Hat da niemand zufällig ne Musterlösung, ...

    Die Musterlösung hast Du ja bereits in diesem Beitrag bekommen, aber die einzige Reaktion darauf und alle sonstigen Erklärungsversuche war:

    Flanders86 schrieb:

    ... ich peil gar nichts mehr 😕

    Aber Deine Hartnäckigkeit ist schon zu bewundern - also nochmal ganz von vorn:

    #include <fstream>
    #include <iostream>
    #include <string>
    
    int main()
    {
        using namespace std;
        ifstream Quelldatei( "neu.txt" );
        if( !Quelldatei.is_open() )
        {
            cerr << "Fehler beim Oeffnen" << endl;
            return -1;
        }
        int nr;
        string sex, name;
        // Format: 1 male Alexander
        //         2 female Julia
        //         3 female Andrea 
        if( Quelldatei >> nr >> sex >> name )
        {
            cout << "Geschlecht: " << sex << endl;
            cout << "Name:       " << name << endl;
        }
        else
            cerr << "Fehler beim Lesen " << endl;
        return 0;
    }
    

    Jetzt nenne uns doch mal bei jeder Zeile, ob Du das kapierst oder nicht - also etwa so
    1.-4. ok
    5. unklar - was ist unklar?
    6. ok
    // usw.

    Gruß
    Werner



  • Hallo

    Ich will Geld verdienen. 😃 Sagt nicht zuviel.

    chrische



  • ne so wichtig ist mir die Aufgabe nicht, dass ich dafür bezahlen würde, soll ja lediglich ne Übung für mich sein, die mit meinem Wissen einfach nicht machbar ist leider, aber danke fürs Angebot 😉



  • Hallo

    Du solltest nicht so schnell aufgeben, sondern lernen genau zu beschreiben, was bei dir nicht klappt, dazu Code vorlegen und versuchen das Gesamtproblem in viele kleine AUfgaben zu gliedern und dich dann dem Endziel langsam zu nähern.

    chrische



  • Hallo,

    die Musterlösung Werner Salomon versteh ich schon vom Aufbau her , nur die Syntax versteh ich teilweise irgendwie nicht ganz, zb. die Zeilen 16-18,
    das wo auskommentiert ist, was bedeutet des genau ?

    Flanders



  • Fang doch erstmal langsam an, z.B. hiermit



  • Flanders86 schrieb:

    soll ja lediglich ne Übung für mich sein,

    Ne Komplettloesung von uns ist aber keine Uebung fuer dich. Ich kann nur wiederholen was ich und alle anderen schon ein paarmal geschrieben haben: Zeig uns (mit Code, deine numerierte Liste ist ganz sicher kein C++ code) wie weit du bist, und wo deine Probleme beim naechsten Schritt sind. Wir werden dir dann helfen die Probleme zu loesen damit du allein weiter voran kommst. Nur so kannst dus wirklich lernen.



  • Hallo

    ADs ist auskommentiert udn stellt nur einen Kommentar dar, der dir das Lesen des Programmes einfacher machen soll. Er weist dort nur auf das Format hin, welches ind er Textdatei verwendet wird und wie dann eben auch ausgelesen werden muss.

    chrische



  • ich würde den inhalt der datei auch davor in ne klasse bzw in nen struct packen...
    so in etwa:

    #include <string>
    
    struct person
    {
    private:
    const std::string Anrede, Name;
    public:
    const string GetAnrede (void) const; //usw
    person (const std::string &name, const std::string anrede/*...*/) : Anrede (anrede), Name (name) {};
    //...
    }
    
    #include <vector>
    #include <iterator>
    vector <*person> Personen;
    typedef vector <*person>::const_iterator cit_p; //constanter iterator von personen
    
    string eingabe;
    cin >> eingabe;
    
    string anrede;
    for (cit_p (Personen.begin ()); cit_p != Personen.end (); ++cit_p)
    {
    if (eingabe == (*cit_p)->GetName ())
    anrede = (*cit_p)->GetAnrede ();
    }
    

    alternativ kannst du die schleife auch in ne fkt des structs / der klasse hauen...

    Zumindest würde ich es so machen - aber hat paar Nachteile, das noch ma zu puffern:

    - wenn die Datei iwann sehr groß wird hast du ja alles doppelt (klasse und datei)
    - wenn das Programm ständig laufen soll und ohne neustart änderungen der datei übernehmen soll (könnte man auch über nen einlesen aller x minuten machen - aber naja... siehe 1. ^^)

    alternativ könnte man auch mysql nehmen und die angaben in ne mysql packen oder du schreibst direkt ne klasse, der du so was ähnliches beibringst - aber auch das hat nachteile - wenn du sie geöffnet lässt (damit du sie ne jedes ma wieder öffnen und schließen musst), dann gibt es wahrscheinlich probleme, wenn du sie parallel ändern willst (weiß ich gar nicht genau, aber wär eigtl nicht unlogisch... ^^) oder du musst sie eben doch bei jeder "Query" wieder öffnen und schließen - was jedoch bei vielen Eingaben auch doof ist - musst du selbst wissen...

    ich hoffe, dass das mehr hilfreich als irreführend war...

    bb

    //edit:
    '- wenn die Datei iwann sehr groß wird hast du ja alles doppelt (klasse und datei)'

    logischerweise hast du immer alles doppelt - was auch kein prob ist, wenn die datei nur 10 zeilen oder so hat... aber iwann wirds dann doch doof ^^



  • ja klar, nur wen ich mich nicht auskenne, wie soll ich da mein Problem genau schildern, Quellcode hab ich keinen vorliegen, weil ich kein Plan habe wie ich am besten Anfangen soll

    flanders



  • Flanders86 schrieb:

    ja klar, nur wen ich mich nicht auskenne, wie soll ich da mein Problem genau schildern, Quellcode hab ich keinen vorliegen, weil ich kein Plan habe wie ich am besten Anfangen soll.

    Setze einfach den Algorithmus aus deinem ersten Beitrag Punkt für Punkt in Code um. Und wenn du das bei einem Punkt nicht schaffst, dann sagst du "Ich kann Punkt X.Y.Z nicht umsetzen", und zeigst, was du zu den Punkten davor hinbekommen hast. So schwierig kann das doch nicht sein.

    Und wenn du mit diesem Programm generell überfordert bist, dann such dir doch bitte eine einfachere Problemstellung. Da du anscheinend ja nicht mal einen Kommentar erkennst, wäre das eine oder andere Grundlagentutorial angebracht.



  • pumuckl schrieb:

    Zeig uns (mit Code, deine numerierte Liste ist ganz sicher kein C++ code) wie weit du bist, und wo deine Probleme beim naechsten Schritt sind. Wir werden dir dann helfen die Probleme zu loesen damit du allein weiter voran kommst. Nur so kannst dus wirklich lernen.

    hat er doch schon in dem Vorgänger-Thread gemacht.

    unskilled schrieb:

    ich würde den inhalt der datei auch davor in ne klasse bzw in nen struct packen...

    .. liest Dein keiner die Antworten der anderen?

    Werner Salomon schrieb:

    Flanders86 schrieb:

    Hat da niemand zufällig ne Musterlösung, ...

    Die Musterlösung hast Du ja bereits in diesem Beitrag bekommen, ...

    (folge dem Link)

    🙄 Werner



  • ja nur den versteh ich leider net



  • Hallo

    Du scheinst auch nicht sinnverstenhend Lesen zu können.

    chrische


Anmelden zum Antworten