Zahlen einer Menge hinzufügen
-
Hallo, dieses Programm soll einer Menge Zahlen hinzufügen.
Falls die Zahl schon in der Menge enthalten ist, soll die Ausgabe:
"Die Zahl ist bereits in der Menge enthalten." erfolgen.
Aber die Meldung wird nach jeder Zahl die ich eingebe ausgegeben.#include <iostream> #include <vector> using namespace std; void hinzufuegen(); bool pruefen(int z); vector<int> vec; int main() { for (;;) { hinzufuegen(); } return 0; } void hinzufuegen(){ cout<<"Zahl eingeben: "; int Zahl; cin>>Zahl; bool b = pruefen(Zahl); if (b == 1){ vec.push_back(Zahl); } else cout<<"Die Zahl ist bereits in der Menge enthalten."<<endl; } bool pruefen(int z){ for(int i=0; i<vec.size(); i++){ if(vec[i]==z) return 0; else return 1; } }
-
Lass als allererstes mal globale Variablen sein.
bool pruefen(int z) { // ...
std::find()
Ähm. Und warum vergleichst Du
bool
eans mit Integern und gibst Integer zurück wenn's eigentlichbool
s sein sollten?for(int i=0; i<vec.size(); i++){ if(vec[i]==z) return 0; else return 1; }
Your logic is flawed.
for (std::size_t i = 0; i < vec.size(); ++i) { if(vec[i] == z) return true; } return false;
-
1 = true und 0 = false. Ich dachte dass das automatisch umgewandelt wird.
-
Ja, schon. Trotzdem ist es strange, Baby.
Ohne Scheiß:
#include <iostream> #include <vector> #include <algorithm> int main() { std::vector<int> values; for (int value; std::cin >> value;) if (std::find(values.begin(), values.end(), value) == values.end()) values.push_back(value); else std::cout << "Die Zahl ist bereits in der Menge enthalten.\n"; std::cout << "\nValues:\n"; for (auto v : values) std::cout << v << '\n'; }
-
Hey, vielen Dank!
Das ist eine super saubere Lösung
-
Ich möchte nur mal einwerfen, dass Menge auf Englisch "set" heißt. Könnte ja vielleicht sein, dass es da einen entsprechenden Datentyp gibt
-
@wob Maybe Baby
Aber ich kenn' mich mitset
s nicht aus. Die habe ich bei meinen "Hello, World!"s noch nie gebraucht.