tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
330
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    SoltanDemoriel SoltanDemoriel ist offline Mitglied
    Registriert seit
    Jun 2004
    Beiträge
    21
    Hallo zusammen ich habe folgendes Problem:
    Ich hole mir eine id die ich dan vergleiche mit allen ids in einer liste, wenn ich die richtige id gefunden habe , hole ich mir die dazugehörigen andern werte.

    So nun will ich diese daten in einer neuen liste speichern :
    Allerdings wird hier nie ein neues Element gespeichert sondern immer das 1 überschrieben hab leider ka warum ;(
    Deklarationen
    Code :
    1
    2
    3
    4
    5
    6
    7
    
     
        set <Daten> daten1set;
    //Classe Daten
        Daten Datenliste1;
    set <Daten> tempset;
        Daten templiste;
        int tempid;


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
        do
        {
                
                int vergleich;
                float verpreis;
                string vername;
            
            cout << "Geben Sie die Artikelnummer ein: ";
            cin >> tempid;
            if(tempid <= 0) break;
     
            
                for(set<Daten>::iterator x=daten1set.begin();x !=daten1set.end();x++)
            {
        
                
                if (tempid==x->Get1())
                
                {
                    vergleich=x->Get1();
                    verpreis=x->Get3();
                    vername=x->Get2();
                    
             
                }
            }
     
     
            
                
        
        
                templiste.Set(vergleich,vername,verpreis);
                Daten *bla = new Daten(templiste);
                tempset.insert(*bla);break;
     
        
        } while( tempid != 0 );
    und hier ist die "Prozedur"


    Und hier die Methoden
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    void Daten::Set(int x_id,string x_name,float x_preis)
    {
            id=x_id;
            name=x_name;
            preis=x_preis;
     
    }
     
    int Daten::Get1()const
    {
     
        return(this->id);
     
    }
    string Daten::Get2()const
    {
     
        return(this->name);
     
    }
     
    float Daten::Get3()const
    {
     
        return(this->preis);
     
    }
    bitte um hilfe muss das für ne Klausur wissen ;(
    Geändert von SoltanDemoriel (17.10.05 um 23:42 Uhr)
     

  2. #2
    Registriert seit
    Jan 2002
    Ort
    Bayern
    Beiträge
    1.390
    Hi,

    fehlt da noch ein Teil vom Code?
    ich sehe nirgens die Stelle wo du "daten1set" mit Daten auffüllst.

    Daniel
     
    we would change the world if god gave us the source code...
    and remember, science is nothing more than reverse engineering nature...

    Current projects:
    - LdrawConverter

  3. #3
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Am besten du postest mal den kompletten Code der Daten Klasse.

    Um Elemente in einem Set zu speichern benötigt man eine Ordung für diese Elemente, man muß sie also vergleichen können. Wo hast du das denn definiert?

    Dann prüfst du nicht ob überhaupt eine id nach tempid eingelesen werden konnte.

    Außerdem ist nicht klar ob du bei deiner Suche überhaupt was gefunden hast, du verwendest aber einfach die Werte die in vergleich, vername und verpreis drin stehen. Weiter braucht man logischerweise nicht weitersuchen wenn man den richtigen Eintrag gefunden hat.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    
            cout << "Geben Sie die Artikelnummer ein: ";
            if (cin >> tempid) {
                // tempid wurde eingelesen.
                if(tempid <= 0) break;
            } else {
                // tempid konnte nicht eingelesen werden
                // z.B. Formatfehler (kein int) etc.
                break;
            }
     
            bool found = false;
            for(set<Daten>::iterator x=daten1set.begin();x !=daten1set.end();x++)
            {
                if (tempid==x->Get1())
                {
                    vergleich=x->Get1();
                    verpreis=x->Get3();
                    vername=x->Get2();
     
                    found = true; break; // wenn gefunden, stopp.
                }
            }
            if (found) {
                templiste.Set(vergleich,vername,verpreis);
                tempset.insert (templiste);
     
                        // Das ist ein Speicherleck!!
                            /* Daten *bla = new Daten(templiste);
                                tempset.insert(*bla); */
            } else {
                cerr << "Fehler: id " << tempid << " nicht gefunden.\n";
            }
        } while( tempid != 0 ); // doppelt gemoppelt.
     
    // ----------------------
     
    int Daten::Get1()const
    {
        // über "this->id" zuzugreifen ist unnötig.
        return id;
    }
    string Daten::Get2()const
    {
        return name;
    }
     
    float Daten::Get3()const
    {
        return preis;
    }
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  4. #4
    SoltanDemoriel SoltanDemoriel ist offline Mitglied
    Registriert seit
    Jun 2004
    Beiträge
    21
    ahhh danke es klapt *freu*, und ich verstehs sogar

    ich danke echt tausend mal !!
     

Ähnliche Themen

  1. Elemente eines Containers auslesen
    Von Templorials im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 09.07.08, 13:42
  2. Antworten: 1
    Letzter Beitrag: 22.06.07, 23:47
  3. Spaltenlayout innerhalb eines Containers
    Von anno_1976 im Forum CSS
    Antworten: 13
    Letzter Beitrag: 09.10.05, 16:25
  4. Höhe eines div-Containers im IE
    Von dschue im Forum CSS
    Antworten: 5
    Letzter Beitrag: 15.04.04, 12:21
  5. Ausrichtung eines Containers
    Von webberNRW im Forum CSS
    Antworten: 8
    Letzter Beitrag: 15.03.04, 01:31