2010-11-28 5 views
0

Ich habe ein Problem mit der While-Schleife in C++. Ich schreibe diesen Code:C++ während Problem

#include <iostream.h> 
main() { 
    int a, av = 0; 
    cout << "Enter a number: "; 
    cin >> a; 

     for (int i = 1; i <= a; i++) { 
      while (av == 1) { 
       cout << "abc" << a/i; 
       if (a % i == 0) { 
        av = 1; 
       } 
      } 
     } 
} 

Dieses Programm sollte „abc“ drucken, aber es wird nicht gedruckt, irgend etwas. Ich weiß, dass das Problem in während Abschnitt ist, aber wie kann ich es beheben? Danke ..

+2

[Der Rückgabetyp von 'main()' muss 'int'] (http://stackoverflow.com/questions/4207134/what-is-the-proper-declaration-of-main/4207223# 4207223). Der Header der Standardbibliothek heißt '' (kein '.h'). Die Standardbibliothekseinheiten befinden sich im Namespace "std" und müssen qualifiziert sein (z. B. "std :: cout", "std :: cin" usw.). –

Antwort

3

Es sollte while (av == 0) sein, um in die innere Schleife zu kommen.

1

Sie initialisieren nie av 1. Versuchen Sie, Ihre erste Aussage zu ändern:

int a, av = 1; 
2

Am Anfang av ist gleich 0. Sein Wert wird nie geändert, weil die while-Schleife nie eingegeben wird (da av ist NICHT gleich 1).

3

av ist 0, wenn Sie in die While-Schleife gelangen, daher ist die Bedingung av==1 immer falsch.

1: Der Benutzer gibt 0 als

0

Nun, die while-Schleife nie da av = 0 und die Schleife Prädikat av == 1.

0

Zwei Fälle, wenn abc nicht gedruckt werden eingegeben werden die Eingabe für 'a' - Die for-Schleife wird in der ersten Schleife selbst verlassen, da ich nie 0 wäre.

2: Anfangswert von av ist 0 und und while (av == 1) wäre nie unabhängig davon, wie oft die For-Schleife ausgeführt wird

drucken abc:

Set av == 1 anfänglich oder sicher Benutzer eine Nummer> 0 immer

ODER

Änderung der Code machen wie folgt eingeben: while (av = = 1) { cout < < "abc" < < a/i; } wenn (a% i == 0) av = 1;