Vergleichen Array Wert mit Variable Wert



  • ich dachte wenn ich überprüfe die Variable svn
    mit dem Array über Index

    if(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.


Anmelden zum Antworten