2017-01-14 5 views
3

Ich muss feststellen, ob eine eingegebene Zahl Ziffern in aufsteigender Reihenfolge von rechts nach links hat.So ermitteln Sie, ob die Zahl Ziffern in aufsteigender Reihenfolge von rechts nach links hat

Mein Code nicht scheint richtig funktioniert

Hier ist mein Code:

int n, temp; 
cout << "Please enter number: "; 
cin >> n; 
bool ascending = true; 
temp = n%10; 

while (n>0) 
{ 
    n /= 10; 
    if (temp < n % 10) 
    { 
     ascending = false; 
    } 
} 

if (ascending) 
{ 
    cout << "Number is ascending"; 
} 
else { 
    cout << "Number is not ascending"; 
} 
+0

In Situationen wie diesen, ist es am besten, einen Debugger zu verwenden. Debugger können für Anfänger einschüchternd sein, so dass die schnelle Alternative darin besteht, ein paar "Couts" anzulegen, um über die Werte von Variablen informiert zu sein und wo der Kontrollfluss läuft. –

Antwort

1

Sie sind nicht den Wert von temp Aktualisierung nach jeder Iteration

int n, temp; 
cout << "Please enter number: "; 
cin >> n; 
bool ascending = true; 
temp = n%10; 

while (n/10 > 0) 
{ 
    n /= 10; 
    if (temp > n % 10) 
    { 
     ascending = false; 
     break; 
    } 
    temp = n % 10; 
} 

if (ascending) 
{ 
    cout << "Number is ascending"; 
} 
else { 
    cout << "Number is not ascending"; 
} 
+1

Sie können auch 'brechen', nachdem Sie 'aufsteigend = falsch' gesetzt haben. –

+3

@ Thirupathi Thangavel oh ye Recht, danke, aber es immer noch nicht richtige Antwort, zum Beispiel für die Nummer "5321" - Ausgabe ist nicht aufsteigend – Andrew

+0

@barakmanos ja, danke :) –

1

Als ich das letzte laufen von Thirupathi funktioniert es. Hinweis OP genannt aufsteigende Reihenfolge RECHTS nach LINKS.

Ex Ausgabeläufe:

./order 
Please enter number: 5321 
Number is ascending 

./order 
Please enter number: 2356 
Number is not ascending 
+0

Können Sie eine Lösung vorschlagen? Sonst ist dies keine Antwort. –

Verwandte Themen