Avatar billede sievers Nybegynder
23. marts 2009 - 01:18 Der er 5 kommentarer

Loop stopper ikke

Kan nogen fortælle mig hvorfor alle tal bliver udskrevet, når den burde stoppe så snart e=1? Ved fire burde den jo ikke skrive noget eller hvad? Har jeg skrevet noget forkert?

tal=3
do
{
         
          n=2;
         
          e=0;
         
          do
          {
             
              if (tal%n==0)
              {
              e=1;
              }
             
              if (n==tal)
              {
                        sum=sum+tal;
                        cout << tal << endl;
                       
              }
             
             
              n=1+n;
         
          } while (e!=1 || n<=tal);
         
          tal=tal+1;
         
} while (tal<100);
Avatar billede arne_v Ekspert
23. marts 2009 - 01:32 #1
Den ydre while løkke kører jo indtil tal er 100.
Avatar billede bitmatic Nybegynder
23. marts 2009 - 10:34 #2
Tror du skal bruge AND i stedet for OR i betingelsen i det indre loop.

ikke:
while (e!=1 || n<=tal);

men:
while (e!=1 && n<=tal);
Avatar billede sievers Nybegynder
23. marts 2009 - 18:22 #3
Ja den ydre løkke er god nok men den indre stopper ikke selvom tal%n==0  når e=1, men kører indtil n==tal, hvilket den vel ikke burde når jeg bruger OR betinglesen?
Avatar billede bitmatic Nybegynder
23. marts 2009 - 19:45 #4
Når du bruger OR skal den ene af de to betingelser bare være opfyldt. Derfor er det jo ligegyldigt, at e bliver lig med 1, så længe betingelsen n<=tal stadig er opfyldt, når du bruger OR.

Derfor tror jeg at det du mener i virkeligheden er, at bruge AND...
Avatar billede sievers Nybegynder
23. marts 2009 - 20:31 #5
Ja det er rigtigt, den afbryder så snart en af betingelserne bliver falske. Hvis jeg ville bruge OR, skulle jeg vel have brugt en until loop.
Tak for hjælpen og husk at smide et svar.
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
Kategori
Kurser inden for grundlæggende programmering

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