Vergleichen Array Wert mit Variable Wert
-
ich dachte wenn ich überprüfe die Variable svn
mit dem Array über Indexif(array[j]==svn)
bekomme ich die Ausgabe wenn die svn ein zweites mal eingegeben wird,
die Ausgabe ist allerdings so das der Wert in der runden Klammer immer
True ist bitte warum verstehe ich nicht.#include <iostream> using namespace std; int main(){ int svn=1; int anzahl=0; int array[90]; for(int i=0; svn!=0;i++) { cout<<"Bitte Sozialversicherungsnummer eingeben; Ende = '0'"<<endl; cin>>svn; anzahl++; array[i]=svn; if(anzahl>=2){ for(int j=0;j<anzahl;j++){ if(array[j]==svn){ cout<<"WARNING Sozialversicherungsnummer bereits vorhanden"<<endl; } } } } }
-
for(int j=0;j<anzahl;j++){
Gehe nur bis j<i, denn bei i (= anzahl-1) ist ja das zuletzt eingefügte. Oder noch sinnvoller, prüfe erst ob es schon vorhanden ist und füge es danach ein. Oder benutze wie schon ganz am Anfang erwähnt vorhandene Klassen, Funktionen der STL.
-
brotbernd schrieb:
for(int j=0;j<anzahl;j++){
Gehe nur bis j<i, denn bei i (= anzahl-1) ist ja das zuletzt eingefügte. Oder noch sinnvoller, prüfe erst ob es schon vorhanden ist und füge es danach ein. Oder benutze wie schon ganz am Anfang erwähnt vorhandene Klassen, Funktionen der STL.
SUPER danke sehr jetzt funktioniert es danke vielmals lg markus
-
markuswenczel schrieb:
SUPER danke sehr jetzt funktioniert es danke vielmals lg markus
Wobei du das Einrücken dennoch überdenken solltest (nachfolgend mal etwas angepasst):
#include <iostream> using namespace std; int main() { int svn=1; // ... // Die Schleife beginnt im gleichen Block wie die Variablendeklaration for(int i=0; svn!=0;i++) { // Der Schleifeninhalt ist ein eigener Gültigkeitsbereich cout<< "Bitte..."; // ... } // <-- Jetzt sieht man als Leser auch WAS geschlossen wird. }Besser lesbarer Code wird eher durchgelesen und man erhält eher eine Hilfe.
Zudem: Du fügst trotz Warnung eine Dopplung ein, das Einfügen sollte wirklich erst nach der Prüfung erfolgen, und auch nur wenn diese erfolgreich ist.