drpingoo
Erfahrenes Mitglied
Hallo zusammen!
ich habe da folgende Aufgabe:
Schreiben Sie die Klasse SIMcard mit den nachfolgend beschriebenen Eigenschaften.
Verwenden Sie dabei den unten gegebenen Typ Eintrag, in dem jeweils ein Name mit einer
Telefonnummer gespeichert wird.
· Die Klasse hat als private Elemente ein Telefonbuch vom Typ vector<Eintrag> und
die PIN (Sperrcode) als int-Zahl.
· Der Konstruktor besitzt einen Referenzparameter vom Datentyp int, in dem die PIN der
SIMcard gespeichert wird.
· Die öffentliche Methode trageEin vom Typ bool trägt in das Telefonbuch einen
neuen Eintrag ein. Übergabeparameter sind ein Name, eine Telefonnummer sowie die
PIN. Bei Angabe eine falschen PIN wird kein Eintrag vorgenommen und die Methode
gibt den Wert false zurück, ansonsten true.
· Die öffentliche Methode sucheNummer vom Typ int sucht die zu einem Namen
gehörige Telefonnummer im Telefonbuch. Die Suche wird nur durchgeführt, wenn die
übergebene PIN derjenigen der SIMcard entspricht. Die Methode gibt den Wert 0 zurück,
wenn kein Eintrag vorhanden ist und -1, wenn die übergebene PIN falsch ist.
Ich habe dazu mal folgendes Programm geschrieben:
Ich habe da nun 2 Probleme.
Das erste ist, dass ich komischerweise immer 1 zurückbekomme, wenn ich nach ein.size (der vector<Eintrag> heisst ein) frage. Beim ersten Mal leuchtet mir das ja ein, aber wenn ich das zweite mal durchgehe, also mit "Müller", da sollten doch 2 Elemente drin sein...
EDIT: Mein Gedanke dahinter ist, dass ich eine for-Schleife dann solange laufen lasse, bis ich durch alle Elemente durchgegangen bin und die Nummer entweder gefunden habe oder nicht.
Das zweite bezieht sich aud die sucheNummer-Fkt. Ich habe ja einen bool, der überprüft, ob die Pin-Eingabe korrekt war oder nicht. Nun würde ich gerne diese Fkt. ebenfalls in der if-Abfrage verwenden, als Übergabeparameter hab ich einfach dieselben genommen, wie immer, aber da motzt der Compiler (Ungültige Verwendung dieses Typs als Ausdruck).
Was müsste dann stattdessen dastehen und wieso versteh er es so nicht?
lg
ich habe da folgende Aufgabe:
Schreiben Sie die Klasse SIMcard mit den nachfolgend beschriebenen Eigenschaften.
Verwenden Sie dabei den unten gegebenen Typ Eintrag, in dem jeweils ein Name mit einer
Telefonnummer gespeichert wird.
· Die Klasse hat als private Elemente ein Telefonbuch vom Typ vector<Eintrag> und
die PIN (Sperrcode) als int-Zahl.
· Der Konstruktor besitzt einen Referenzparameter vom Datentyp int, in dem die PIN der
SIMcard gespeichert wird.
· Die öffentliche Methode trageEin vom Typ bool trägt in das Telefonbuch einen
neuen Eintrag ein. Übergabeparameter sind ein Name, eine Telefonnummer sowie die
PIN. Bei Angabe eine falschen PIN wird kein Eintrag vorgenommen und die Methode
gibt den Wert false zurück, ansonsten true.
· Die öffentliche Methode sucheNummer vom Typ int sucht die zu einem Namen
gehörige Telefonnummer im Telefonbuch. Die Suche wird nur durchgeführt, wenn die
übergebene PIN derjenigen der SIMcard entspricht. Die Methode gibt den Wert 0 zurück,
wenn kein Eintrag vorhanden ist und -1, wenn die übergebene PIN falsch ist.
Ich habe dazu mal folgendes Programm geschrieben:
Code:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
struct Eintrag{
string name;
int nummer;
};
class simcard{
private:
vector<Eintrag> ein;
int PIN;
public:
simcard(); //Default Konstruktor
int Set_PIN(int pin); //Set-Methode
bool trageEin(string Name, int Telnr, int pin);
int sucheNummer();
};
simcard::simcard(){
PIN = 0;
Eintrag eintrag;
eintrag.name = " ";
eintrag.nummer = 0;
}
bool simcard::trageEin(string Name, int Telnr, int pin){//Überprüft, ob PIN korrekt ist,
if(PIN==pin){ //wenn ja, Person ins Tel.buch eintragen
Eintrag eintrag2;
eintrag2.name = Name;
eintrag2.nummer = Telnr;
ein.push_back(eintrag2);
Eintrag front = ein.front();//das ist bloss dazu da, damit
string f =front.name; //ich kontrollieren kann, wie viele
int anzahl =ein.size(); //Elemente ich in vector<Eintrag> besitze
cout << anzahl << endl;
cout << "wahr " << f << endl;
return true;
}
else{
cout <<"falsch" << endl;
return false;
}
}
int simcard::Set_PIN(int pin){
PIN = pin;
return PIN;
}
int simcard::sucheNummer(){
if(trageEin(string Name, int Telnr, int pin)
{
return 0;}
else {
return -1;}
}
int main(){
simcard sim;
sim.Set_PIN(456);
cout << sim.Set_PIN(456) << endl;
sim.trageEin("Meier", 5620126, 456);
simcard sim2;
sim2.Set_PIN(123);
cout << sim.Set_PIN(123) << endl;
sim2.trageEin("Müller", 5233352, 123);
sim.sucheNummer();
return 0;}
Ich habe da nun 2 Probleme.
Das erste ist, dass ich komischerweise immer 1 zurückbekomme, wenn ich nach ein.size (der vector<Eintrag> heisst ein) frage. Beim ersten Mal leuchtet mir das ja ein, aber wenn ich das zweite mal durchgehe, also mit "Müller", da sollten doch 2 Elemente drin sein...
EDIT: Mein Gedanke dahinter ist, dass ich eine for-Schleife dann solange laufen lasse, bis ich durch alle Elemente durchgegangen bin und die Nummer entweder gefunden habe oder nicht.
Das zweite bezieht sich aud die sucheNummer-Fkt. Ich habe ja einen bool, der überprüft, ob die Pin-Eingabe korrekt war oder nicht. Nun würde ich gerne diese Fkt. ebenfalls in der if-Abfrage verwenden, als Übergabeparameter hab ich einfach dieselben genommen, wie immer, aber da motzt der Compiler (Ungültige Verwendung dieses Typs als Ausdruck).
Was müsste dann stattdessen dastehen und wieso versteh er es so nicht?
lg
Zuletzt bearbeitet: