Personendaten



  • danke du bist meine rettung 🙂 🙂

    muss ich
    string vorname;
    string strasse;
    usw.
    nicht noch in void eingabe oder void anzeigen schreiben??
    vielleicht könntest du mir ja einen tipp zu der funktion löschen geben 😃

    vielen dank nochmal



  • muss ich
    string vorname;
    string strasse;
    usw.
    nicht noch in void eingabe oder void anzeigen schreiben??

    ja natuerlich, genau so wie person[i].name ...

    meine loeschfunktion:

    void loesch_person () { // eine person loeschen
       string str;int i;
       while (true) {
          system("cls");
          cout<<"welche Nr. soll geloescht werden ? (leer=Ende)\n";
          getline(cin,str); 
          if (str=="") break; // endlos schleife beenden
          int suchnr=atoi(str.c_str()); // string in int umwandeln
          if (suchnr < 1 || suchnr > 320000 ) {   
             cout<< "personal nr ungueltig\n ";
             system("pause");
             continue; // weiter an anfang while schleife
          }
          for (i=0;i< kgroesse;i++ ) // nach personal nr suchen
             if ( person[i].pnr ==suchnr ) {
                person[i].nname=""; // name loeschen reicht
                cout<<"Pers nr.: "<<suchnr<<" geloescht\n";
                break;  // for schleife beenden
             }
          if (i>=kgroesse) // wenn i am ende, dann nicht gefunden
                cout<<"Pers nr.: "<<suchnr<<" nicht gefunden\n";
          system("pause");
       }
       return;
    }
    

    aber vom reinen kopieren lernt man nix 🙂 , bastel mal selber ein wenig am code, also z.bsp. an einer routine zum ändern...



  • ich weiß am kopieren lerne ich nix aber ich steht zur zeit unter druck in ich verstehe fast nix. 🙂

    ich danke dir für deine mühe nochmal.



  • void eingabe_person () { // eine neue person anlegen
       T_person wperson; // temp var
       while (true) {
          cout<<"Name ? (leer=Ende)\n";
          getline(cin,wperson.nname);
          cout<<"Geburtsdatum ?\n";
          getline(cin,wperson.geb); //int
          cout<<"Strasse ?\n";
          getline(cin,wperson.str);
          cout<<"Hausnummer ?\n";
          getline(cin,wperson.hnr); //int
          cout<<"PLZ ?\n";
          getline(cin,wperson.plz); //int
          cout<<"Ort ?\n";
          getline(cin,wperson.ort);
          cout<<"Land-Code ?\n";
          getline(cin,wperson.lcode); //int
          cout<<"Land ?\n";
          getline(cin,wperson.land);
    
          if (wperson.nname=="") break;
          int frei=find_frei();
          if (frei==-1) { // ungueltige index heisst fehler, voll
             cout<<"tabelle voll !\n";
             break;
          }
          person[frei].pnr=frei;
          person[frei].nname=wperson.nname;
          person[frei].geb=wperson.geb;
          person[frei].str=wperson.str;
          person[frei].hnr=wperson.hnr;
          person[frei].plz=wperson.plz;
          person[frei].ort=wperson.ort;
          person[frei].lcode=wperson.lcode;
          person[frei].land=wperson.land;
       }
       return;
    }
    

    bei den ganzen int deklarationen in der while schleife kommt bei mir ein fehler:
    no matching function for call to `getline(std::istream&, int&)'

    ich habe ein paar sachen probiert da zeigt es keinen fehler an aber dann spinnt das programm irgendwie



  • die funktion getline(cin,...) erwartet einen string, da kannst du keine int variable übergeben. mach es so wie oben steht:

    getline(cin,str);
          int suchnr=atoi(str.c_str()); // string in int umwandeln
    

    das koennte man auch in eine funktion auslagern

    int getInt ( ) {
       int erg;string str;
       getline(cin,str);
       erg=atoi(str.c_str());
       return erg;
    }
    // und dann aufrufen mit:
       int i=getInt();
    

    liefert allerdings bei leerstring eine 0, dass muesste man noch abfangen...



  • hab grad gesehen:

    cout<<"Geburtsdatum ?\n";
          getline(cin,wperson.geb); //int
    

    das wird auch nicht gehen, int geht nur bis +32767, nimm lieber auch string als datentyp.

    es gibt zwar auch spezielle typen fuer datums felder, aber wenn du mit dem datum nix weiter machen willst, reicht string...



  • kermit1 schrieb:

    ..., int geht nur bis +32767,...

    Das ist heutzutage aber schon sehr selten. Auf was für nem Betriebssystem
    arbeitest du denn. 😕



  • Scheint wohl Windows 95 zu sein. 98 hat meines Wissens schon 32 bit.

    Aber stimmt, das ist echt selten... fast Rarität. 🙂



  • Searence schrieb:

    Scheint wohl Windows 95 zu sein. 98 hat meines Wissens schon 32 bit.

    Windows95 "hat" auch 32bit.



  • Bashar schrieb:

    Windows95 "hat" auch 32bit.

    Auch die ersten Verisonen?

    Ich bin der Meinung das die ersten Ausgaben noch 16 Bit Versionen waren.
    (Korrigiere mich falls ich falsch liege)

    //EDIT

    ich lag falsch, danke für die Richtigstellung, so lerne ich auch dazu. 🙂
    Für alle die es nachlesen wollen: http://de.wikipedia.org/wiki/Windows_95


Anmelden zum Antworten