vector Objeke automatisiert erzeugen
-
Hallo
versuche gerade eine Buchverwaltung zu schreiben.
habe zwei Klassen Buch und Buchverwaltung mitvector<Buch>buecher;
.
Hänge an den letzen Menüpunkt.
"Testdaten erzeugen".
Aufgabenstellung zu diesen Punkt:
3. Testdaten erzeugen
Es werden automatisiert mindestens 5 Buch-Objekte erzeugt und abgespeichert.
Mir ist nicht klar was in dem Fall genau unter "automatisiert" gemeint ist.Mein Ansatz wäre:
void Buchverwaltung::testBook(){ m_buecher.push_back(Buch("Das verlorene Symbol" , "Dan Brown" , 2009, 200); /* nach den gleichen Prinzip weitere 4 */ }
-
Ja.
-
danke. Allerdings wenn ich es im main() aufrufe bekomme ich nichts in der Konsole angezeigt
-
Es steht in Deinem Beitrag auch kein Code von dem man eine Ausgabe erwarten würde.
-
Swordfish schrieb:
Es steht in Deinem Beitrag auch kein Code von dem man eine Ausgabe erwarten würde.
ich mach es über :
void Buchverwaltung::testBook(){ for(int i= 0; i < m_buecher.size(); i++){ m_buecher.push_back(Buch("das verlorene Symbol", "Dan Brown", 2009, 200, ROMAN)); m_buecher.push_back( Buch("Frieden Und Krieg", "Leo Tolstoi", 1945, 200, SACHBUCH)); cout << m_buecher[i]<< "" << endl; } }
funktioniert aber leider nicht.
im main rufe ich die Funktion :
int main(){ Buchverwaltung bu; bu.testBook(); }
Was mache ich falsch?
-
helenchen schrieb:
for(int i= 0; i < m_buecher.size(); i++){
Was gibt
m_buecher.size()
wohl zurück, wenn der Vektor leer ist und wie sieht es dann mit der Bedingungi < m_buecher.size()
füri = 0
aus.Tip: Du brauchst für das einfügen mit
push_back()
keine Schleife.
-
Swordfish schrieb:
helenchen schrieb:
for(int i= 0; i < m_buecher.size(); i++){
Was gibt
m_buecher.size()
wohl zurück, wenn der Vektor leer ist und wie sieht es dann mit der Bedingungi < m_buecher.size()
füri = 0
aus.Tip: Du brauchst für das einfügen mit
push_back()
keine Schleife.m_buecher.size()
gibt die lenge des vectors<Buch> buecher aus.
So leer ist er nicht. Ich habe davor durch die FunktionaddBook()
alle nötigen Details beim Nutzer abgefragt und diese im vector gespeichert
-
helenchen schrieb:
m_buecher.size()
gibt die lenge des vectors<Buch> buecher aus.
So leer ist er nicht. Ich habe davor durch durch die FunktionaddBook()
alle nötigen Details beim Nutzer abgefragt und diese im vector gespeichert
widerspricht direkt
helenchen schrieb:
int main(){ Buchverwaltung bu; bu.testBook(); }
Zeig am besten vollständigen Quellcode.
-
#ifndef BUCHVERWALTUNG_H #define BUCHVERWALTUNG_H #include "buch.h" #include <vector> #include <iostream> using namespace std; class Buchverwaltung{ public: Buchverwaltung(); void showAllBooks(); void addBook(); void testBook(); virtual ~Buchverwaltung(); private: string titel;// titel string autor;// autor int jahr;// jahr int seiten;// Seitenanzahl Kategorie m_k; bool exists(string titel); vector <Buch> m_buecher; }; #endif /* BUCHVERWALTUNG_H */
#include "buchverwaltung.h" #include <vector> #include <string> #include <iostream> using namespace std; Buchverwaltung::Buchverwaltung(){ } bool Buchverwaltung::exists(string titel){ for( Buch& b: m_buecher){ if(titel == b.getTitel()) return true; } return false; } void Buchverwaltung::addBook(){ int x; cout << "Bitte Titel eingeben: "; cin >> titel; if(exists(titel)){ cout << "\nTitel bereits vorhanden "; return; } cout << "\nBitte den Autor eingeben: "; cin >> autor ; cout <<"\nBitte das Jahr eingeben: "; cin >> jahr; cout << "\nBitte die Seitenanzahl eingeben: "; cin >> seiten; cout << "\nBitte die Kategorie als Zahl eingeben: (0: SACHBUCH, 1: RATGEBER, 2: FANTASY, 3: SCIFI, 4: ROMAN, 5: KRIMI,6: OTHER): "; cin >> x; if(x <= 6){ m_k = static_cast<Kategorie>(x); switch(m_k) { case 0: cout << "\n SACHBUCH\n"; break; case 1: cout << "\n RATGEBER\n"; break; case 2: cout << "\n FANTASY\n"; break; case 3: cout << "\n SCIFI\n"; break; case 4: cout << "\n ROMAN\n"; break; case 5: cout << "\n KRIMI\n"; break; case 6: cout << "\n OTHER\n"; break; } } m_buecher.push_back(Buch(titel, autor, jahr, seiten, m_k)); } void Buchverwaltung::showAllBooks(){ for(int i = 0; i < m_buecher.size(); i++){ cout << "Titel: " << m_buecher[i].getTitel() << endl; cout << "Autor: " << m_buecher[i].getAutor() << endl; cout << "Jahr: " << m_buecher[i].getJahr() << endl; cout << "Seitenanzahl: " << m_buecher[i].getSeiten() << endl; cout << "Kategorie: " << m_buecher[i].getKategorie() << endl; } } void Buchverwaltung::testBook(){ m_buecher.push_back(Buch("das verlorene Symbol", "Dan Brown", 2009, 200, ROMAN)); m_buecher.push_back( Buch("Frieden Und Krieg", "Leo Tolstoi", 1945, 200, SACHBUCH)); cout << m_buecher[i]<< "" << endl; } Buchverwaltung::~Buchverwaltung(){ }
#include "buchverwaltung.h" #include <cstdlib> #include <vector> #include <iostream> using namespace std; int main() { Buchverwaltung bu; char a; do{ cout << "\n************Buchverwaltung**********************\n"; cout << "\n 1. (A)lle Buecher anzeigen\n"; cout << "\n 2. (B)uch hinzufuegen\n"; cout << "\n 3. (T)estdaten erzeugen\n"; cout << "\n 4. (P)rogramm beenden\n" << endl; cout << "Bitte waehlen Sie ein Menuepunkt aus..." << endl; cin >> a; switch(a){ case '1': case 'A': cout << "Sie haben Menuepunkt 1 bzw (A) ausgewaehlt " << endl; bu.showAllBooks(); break; case '2': case 'B': cout << "Sie haben Menuepunkt 2 bzw (B) ausgewaehlt " << endl; bu.addBook(); break; case '3': case 'T': cout << "Sie haben Menuepunkt 3 bzw (T) ausgewaehlt " << endl; bu.testBook(); break; case '4': case 'P': cout << "Programm beenden" << endl; break; } }while(a != '4'|| a != 'P'); return 0; }
-
Swordfish schrieb:
Zeig am besten ===>> vollständigen <<=== Quellcode.
-
Swordfish schrieb:
Swordfish schrieb:
Zeig am besten ===>> vollständigen <<=== Quellcode.
Hier ist noch die Klasse Buch
#ifndef BUCH_H #define BUCH_H #include <string> using namespace std; enum Kategorie{ SACHBUCH , RATGEBER, FANTASY, SCIFI, ROMAN, KRIMI, OTHER }; class Buch{ public: Buch(); Buch(string titel, string autor, int jahr, int seiten, Kategorie k); void setTitel(string titel); string getTitel() const; void setAutor(string autor); string getAutor() const; void setJahr(int jahr); int getJahr() const; void setSeiten(int seiten); int getSeiten() const; void setKategorie(Kategorie k); string getKategorie(); virtual ~Buch(); private: string m_titel; string m_autor; int m_jahr; int m_seiten; Kategorie m_k; }; #endif /* BUCH_H */ #include "buch.h" #include <iostream> using namespace std; Buch::Buch(){ } Buch::Buch(string titel, string autor, int jahr, int seiten, Kategorie k) :m_titel(titel), m_autor(autor), m_jahr(jahr), m_seiten(seiten), m_k(k) { } void Buch::setTitel(string titel){ m_titel = titel; } string Buch::getTitel() const{ return m_titel; } void Buch::setAutor(string autor){ m_autor = autor; } string Buch::getAutor() const{ return m_autor; } void Buch::setJahr(int jahr){ m_jahr = jahr; } int Buch::getJahr() const{ return m_jahr; } void Buch::setSeiten(int seiten){ m_seiten = seiten; } int Buch::getSeiten() const{ return m_seiten; } void Buch::setKategorie(Kategorie k){ switch(k) { case SACHBUCH: cout << "/n Sachbuch"; break; case RATGEBER: cout << "/n Ratgeber"; break; case FANTASY: cout << "/n Fantasy"; break; case SCIFI: cout << "/n SciFi"; break; case ROMAN: cout << "/n Roman"; break; case KRIMI: cout << "/n Krimi" ; break; case OTHER: cout << "/n Other"; break; } m_k = k; } string Buch::getKategorie(){ switch(m_k){ case SACHBUCH: return "Sachbuch"; case RATGEBER: return "Ratgeber"; case FANTASY: return "Fantasy"; case SCIFI: return "SciFi" ; case ROMAN: return "Roman"; case KRIMI: return "Krimi"; case OTHER: return "Other"; } } Buch::~Buch(){ }