2017-09-09 5 views
0
#include <iostream> 
using namespace std; 

int main() 
{ 
    int n,x,y,s=0,p=1; 
    int nr,nr1; 

    cout<<"n="; 
    cin>> n ; 
    cout<<"x="; 
    cin>> x ; 
    cout<<"y="; 
    cin>> y; 

    while(n!=0) 
     { 
      if(n%10%x==0) 
       s=s+n%10; 
      nr++; 
      if(n%10<y) 
       p=p*(n%10); 
      nr1++;  
     } 

    cout<<"s="<<s<<"\n"; 
    cout<<"nr="<<nr<<"\n"; 
    cout<<"p="<<p<<"\n"; 
    cout<<"nr1="<<nr1<<"\n"; 
} 

Je peux taper une valeur pour n , x et y mais il ne montre aucun résultat après. Je ne sais vraiment pas quoi faire. Je pense que quelque chose ne va pas avec le cout à la fin, mais je ne peux pas vraiment comprendre quoi. J'apprécierais vraiment si quelqu'un pourrait aider parce que j'ai besoin de ceci pour un examen dans 2 jours ...Pourquoi ne pas le faire, nr, p et nr1?

+5

Vous modifiez jamais 'n' dans la boucle. Comment deviendrait-il jamais «0» pour que la boucle se termine? Vous l'auriez trouvé très rapidement si vous utilisiez un débogueur pour parcourir le code ligne par ligne. Un débogueur est l'un des outils les plus importants dans une boîte à outils de programmeurs. –

+1

Aussi, je soupçonne que les instructions 'if' ne feront pas ce que vous attendez d'elles non plus. Cela aurait également été découvert très rapidement si vous utilisiez un débogueur. –

+0

Si vous entrez 'n = 0', il n'entrera pas dans la boucle while et si vous augmentez' 1', il ne sortira pas de la boucle while. Pouvez-vous expliquer ce que vous voulez accomplir? – MCG

Répondre

0

Vous avez une boucle infinie.

Vous pouvez avoir votre logique While comme:

while(n!=0) 
{ 
    n = n%10; 

    if(n%x==0) 

     s=s+n ; 
     nr++ ; 

    if(n<y) 
     p=p*n ; 
     nr1++ ; 
} 
+0

Ne fonctionne pas même si je le change –

+0

@BogdanNacev Puis-je avoir l'entrée et la sortie de l'échantillon pour comprendre la logique? –

+0

L'idée est d'ajouter les chiffres d'un nombre n qui se divise avec x et multiplie les chiffres dans n qui sont plus petits que y: –

0

Ce serait la réponse à votre logique. J'ai utilisé des valeurs statiques, le rendre dynamique. Code de travail avec sortie: http://codepad.org/b5kpWC6y

#include <iostream> 

    using namespace std; 

    int main() { 
     int n = 123456; 
     int x=2; 
     int y=5; 

     int s=0; 
     int p=1; 
     int digit = 0; 

     while(n>0) 
     { 
      digit=n%10; 

      if(digit%2==0) 
      { 
       s=s+digit; 
      } 
      if(digit<y) 
      { 
       p=p*digit; 
      } 

      n=n/10; 


     } 

     cout<<"\nSum = " << s; 
     cout<<"\nProd = " << p; 
    }