2016-12-23 5 views
-3

Я застрял в этой программе. Какая программа состоит в том, чтобы взять целое число от пользователя и отобразить все число, оставшееся после резки четных чисел.Как это продолжить, пока

int main(){ 
    long n, minder=0; 
    int cdonr, power=1; 


    cout<<"Give a positive number "<<endl; 
    cin>>n; 
    while (n>0){ 
     cdonr=n%10; 
     if(cdonr % 2 != 0){ 
      minder=minder+cdonr*power; 
      power=power*10; 
     } 
     n=n/10; 

    } 
    cout<<"The number that is left after all even number " << endl; 
    cout<<minder<<endl; 
    cout<<"Give a positive nr "<<endl; 
    cin>>n; 
} 

Может кто-нибудь помочь мне с этим, потому что после того, как он разделил первые числа, он не дает ответа на втором.

Благодаря людям на этой общине это ответ

#include<iostream> 

using namespace std; 

int main() { 
    long n, minder = 0; 
    int cdonr, power = 1; 

    cout << "Give a positive number " << endl; 
    cin >> n; 

    while (n > 0) { 
     while (n > 0) { 
      cdonr = n % 10; 
      if (cdonr % 2 != 0) { 
       minder = minder + cdonr * power; 
       power = power * 10; 
      } 
      //always zero so we need a nested while loop 
      n = n/10; 
     } 

     cout << "The number that is left after all even number " << endl; 
     cout << minder << endl; 

     //have to set values to default so they do not hold previous values 
     minder = 0; 
     cdonr = 0; 
     power = 1; 

     //we can reprompt user for a value 
     //n will get set and it validates with the outer while loop 
     //this allows it to run as many times as valid inputs 
     cout << "Give a positive number " << endl; 
     cin >> n; 
    } 
} 
+0

Какую ошибку делает его падение с? – Carcigenicate

+0

Он функционирует на первом, но на втором не отвечает – UlikMadik

+0

вход: 123 выход: 13 вход: 1234 вывод: ничего – UlikMadik

ответ

1

Другой ответ по просьбе пользователя, выходит на == 0, <= 0, and not a number

#include<iostream> 

using namespace std; 

int main() { 
    long n, minder = 0; 
    int cdonr, power = 1; 

    cout << "Give a positive number " << endl; 
    cin >> n; 

    while (n > 0) { 
     while (n > 0) { 
      cdonr = n % 10; 
      if (cdonr % 2 != 0) { 
       minder = minder + cdonr * power; 
       power = power * 10; 
      } 
      //always zero so we need a nested while loop 
      n = n/10; 
     } 

     cout << "The number that is left after all even number " << endl; 
     cout << minder << endl; 

     //have to set values to default so they do not hold previous values 
     minder = 0; 
     cdonr = 0; 
     power = 1; 

     //we can reprompt user for a value 
     //n will get set and it validates with the outer while loop 
     //this allows it to run as many times as valid inputs 
     cout << "Give a positive number " << endl; 
     cin >> n; 
    } 
} 
+0

Спасибо, человек :) "))) – UlikMadik

0

Если вы действительно хотите сделать что-то навсегда, петлю на нем. т. Е. Поставить свою «функцию» в цикл. (И рассмотреть потянув ее, чтобы быть реальной функции)

int main() { 
    using namespace std; 

    while (true) 
    { 
     long n, minder = 0; 
     int cdonr, power = 1; 
     cout << "Give a positive number " << endl; 
     cin >> n; 
     while (n > 0) { 
      cdonr = n % 10; 
      if (cdonr % 2 != 0) { 
       minder = minder + cdonr*power; 
       power = power * 10; 
      } 
      n = n/10; 

     } 
     cout << "The number that is left after all even number " << endl; 
     cout << minder << endl; 
    } 
} 
1

Попробуйте это, не бесконечна, и вы можете сделать это столько раз, сколько вы хотите, вызвав функцию.

#include<iostream> 

using namespace std; 

void function(long n, long minder, int cdonr, int power) { 

    while (n > 0) { 
     cdonr = n % 10; 
     if (cdonr % 2 != 0) { 
      minder = minder + cdonr * power; 
      power = power * 10; 
     } 
     n = n/10; 
    } 

    cout << "The number that is left after all even number " << endl; 
    cout << minder << endl; 
} 

int main() { 

    long n, minder = 0; 
    int cdonr, power = 1; 

    //can add a while loop here or just use a for 
    // if you know how many times you want 

    cout << "Give a positive number " << endl; 
    cin >> n; 

    if(n > 0){ 
    function(n, minder, cdonr, power); 
    } 

    //probably add an else here in case of == 0 or < 0 
    // or just loop back if while 

} 
+0

Спасибо за программу, но есть ли более простой способ? Я бы очень хотел поместить все в int main – UlikMadik

+0

Да, после того, как я разместил это, я подумал об этом еще немного. Дай мне пару минут. –

Смежные вопросы