Avatar billede kaptajnknark Nybegynder
21. april 2007 - 14:50 Der er 6 kommentarer

While loop eksekverer ikke

Hej med jer.

Jeg har et while loop der evaluerer en bool, men mit problem er at det simpelthen ikke eksekverer loopet. Jeg kan ikke find ud af hvad der er galt. måske en af jeg kan?!?!

her er lidt kode:

========================

bool flag = false;

...

for (int x = sc_eliminate[round]; x > 0; x--)
  {
    //cout << x;
    //remove a random suitcase
    //setting it's value to 0
    while (flag = false)
        {
        int sc = rand() % 26;
        //cout << sc;
        if (sc_picked[sc] == 0)
        {
                sc_picked[sc] = 1;
        cout << "Player opened suitcase with value: " << sc_value[sc] << "\n";
        flag = true;
            }
            else
        {
            cout << "Suitcase already picked... Pick another? (press enter)\n";
        cin.get();
            }
        }
    flag = false;
}

========================
Avatar billede morhan Novice
21. april 2007 - 14:52 #1
flag == false

ellers tildeler du jo flag værdien false, og efterfølgende evaluerer om udtrykket er sandt
Avatar billede kaptajnknark Nybegynder
21. april 2007 - 14:54 #2
heh! jeg har kigget på den i en time!!! tak skal du ha'
Avatar billede segmose Nybegynder
23. april 2007 - 09:11 #3
Hjælp til selvhjælp skriv altid konstant værdierne først i et udtryk så fanger compileren det for dig. Der kunne også være en warning som du har overset men constant først gør at det bliver en compile time fejl istedet for en run time fejl.

Så hvis du have skrevet

while (false = flag)

havde du fået en compiler fejl istedet for en warning og havde så haft mulighed for hurtigere at fange fejlen.
Avatar billede kaptajnknark Nybegynder
23. april 2007 - 15:40 #4
Fedt... det prøver jeg næste gang
Avatar billede bertelbrander Praktikant
23. april 2007 - 19:29 #5
Jeg synes at den omvendte rækkefølge som segmose foreslår er en uskik som gør koden sværere at læse, man siger ikke: "hvis 7 er x" men "hvis x er 7". Det går helt galt hvis man bruger det med < >, udtrykket "hvis 7 er mindre end x" giver ikke mening, det gør "hvis x er større end 7".

Alle moderne kompilere kan sættes til at give en warning hvis man kommer til at bruge = i stedet for ==
Avatar billede segmose Nybegynder
25. april 2007 - 10:03 #6
Jeg kan godt se hvad du mener Bertel, men jeg synes at warnings har det med at blive ignoreret derfor mener jeg det er bedre sådan, den warning er vist noget man på de fleste compilere skal aktivt slå fra da den er temlig vigtig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester