Ersten false Wert eines bool Arrays finden mittels einer for Schleife



  • Hi,
    ich habe hier 50 Lagerplätze. True = besetzt, false = frei.
    Dieses Programm soll den ersten freien Lagerplatz finden und besetzen.

    #include <iostream>
    
    using namespace std;
    
    //Funktion um einen freien Lagerplatz zu suchen
    //False = frei, true = besetzt
    int Suche(bool Plaetze[50]){
        for(int i=0; i<50; i++)
        {
            if(Plaetze[i]=false){   //Hier müsste eigentlich der erste freie
                return i;}          //Lagerplatz zurückgegeben werden. Das passiert aber nicht.
            }
        }
    
    
    int main()
    {
    
        bool Lagerplatz[50];        //Es existieren 50 Lagerplätze
    
        for(int i=0;i<50; i++){     //Alle Lagerplätze werden mit false initialisiert.
            Lagerplatz[i] = false;  //Demnach ist 0 der erste freie Platz
        }
    
        int Platz;
        Platz = Suche(Lagerplatz);  //Den ersten freien Lagerplatz finden
        Lagerplatz[Platz]=true;     //Den freien Lagerplatz besetzen
    
        for(int i=0; i<50; i++){        //Diese Schleife zeigt den Fehler im Programm.
            cout<<Lagerplatz[i]<<endl;  //Nämlich dass kein einziger Lagerplatz
        }                               //besetzt wurde (alle Werte sind 0)
    
        return 0;
    }
    

    Ich würde eigentlich erwarten, dass das Programm den ersten false Wert im Feld Lagerplatz findet und auf true setzt.



  • @theAnfänger77 Stelle Warnungen beim Kompilieren ein! Der Compiler wird dir sagen, was falsch ist.

    Hinweis: Zuweisungen sind mit =, Vergleiche mit ==.

    Außerdem hat deine Funktion kein return, wenn es kein freies Feld gibt.

    Und verwende nicht überall "50" im Programm, sondern nimm eine Konstante. Lies https://de.m.wikipedia.org/wiki/Magische_Zahl_(Informatik)#Magische_Zahlen_in_Code



  • Vielen Dank! 🙂


Log in to reply