2017-09-09 1 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"; 
} 

Ich kann einen Wert für n , x und y eingeben, aber es zeigt kein Ergebnis nach. Ich weiß wirklich nicht, was ich tun soll. Ich denke, am Ende stimmt etwas mit dem Cout nicht, aber ich kann nicht wirklich herausfinden, was. Ich würde wirklich schätzen, wenn jemand helfen könnte, weil ich das für eine Prüfung in 2 Tagen brauche ...Warum geht es nicht mit s, nr, p und nr1?

+5

Sie nie 'n' in der Schleife ändern. Wie würde es jemals "0" werden, also endet die Schleife? Sie hätten es sehr schnell herausgefunden, wenn Sie nur einen Debugger verwendet hätten, um den Code Zeile für Zeile durchzugehen. Ein Debugger ist eines der wichtigsten Werkzeuge in der Toolbox eines Programmierers. –

+1

Auch ich vermute, dass die 'if'-Anweisungen nicht tun, was Sie von ihnen erwarten. Dies wäre bei Verwendung eines Debuggers auch sehr schnell herausgefunden worden. –

+0

Wenn Sie 'n = 0 'eingeben, wird es nicht in die While-Schleife eingegeben, und wenn Sie größer als' 1 'sind, wird es nicht aus der While-Schleife kommen. Kannst du erklären, was du erreichen willst? – MCG

Antwort

0

Sie haben eine unendliche while-Schleife.

Sie können Ihre Während Logik wie:

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

    if(n%x==0) 

     s=s+n ; 
     nr++ ; 

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

Funktioniert nicht, auch wenn ich es auf –

+0

@BogdanNacev ändere Kann ich die Beispieleingabe und -ausgabe haben, um die Logik zu verstehen? –

+0

Die ideea ist, um die Ziffern einer Zahl n hinzuzufügen, die mit x unterteilen und die Ziffern in n zu multiplizieren, die kleiner als y ist: –

0

Dies ist die Antwort für Ihre Logik wäre. Ich habe statische Werte verwendet, um sie dynamisch zu machen. Arbeits Code mit Ausgang: 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; 
    } 
Verwandte Themen