2016-12-20 2 views
-7

In diesem Code überprüfe ich, ob eine Zahl in einer 8 endet oder nicht und wenn ja, überspringe ich it.it Der Code funktioniert korrekt; jedoch, s ich dies tun möchte, ohne hart jede einzelne Zahl Codierung, die in Enden 8.Willst du den numerischen Wert überspringen, der in 8 endet

for(number1 = 0; number1 <= number2; number1++){ 

     if(number1%2 == 0){ 

      if(number1 == 8 || number1 == 18 || number1 == 28){ 

       continue; 

      } 
      else{ 
       cout << " " << number1<< endl; 
      } 
     } 




    } 
+5

'Anzahl% 10! = 8' –

+1

Für eine gute Zeit finden http://wiki.c2.com/?FizzBuzzTest –

Antwort

2

Gerade Modulo verwenden. number1 % 10 ist eine letzte Ziffer (in Dezimalzahl für positive Zahl). Also einfach prüfen, ob number1 % 10 == 8.

Equivalent-Code ist:

for (number1 = 0; number1 <= number2; number1++) { 
    if (number1 % 2 == 0 && number1 % 10 != 8) { 
     cout << " " << number1 << endl; 
    } 
} 
+0

Vielen herzlichen Dank ... –

+0

, warum es, die Arbeit ?? 'number1% 10! = 8' –

+0

Modulo ('%') teilt die Zahl durch den Betrag und gibt den Rest zurück. 18/10 = 1, Rest 8. – Tas

0

Heres ein Beispiel für das Drucken nicht alle Zahlen mit 8 in einer Schleife endet.

Der Vorgang x % 10 (modulus) gibt den Wert der niedrigsten Ziffer zurück. So können Sie es mit 8 vergleichen, um Ihr Ergebnis zu erhalten.

#include <iostream> 

int main(){ 

    for (int i = 0; i < 20; i++){ 
     if (i % 10 != 8){ 
      std::cout << i << '\n'; 
     } 
    } 
} 
Verwandte Themen