Поток управления в программе, которая преобразует число с использованием базы 10 - PullRequest
1 голос
/ 03 мая 2020

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

Не совсем понятно, каково значение cn в первом проходе в то время как l oop, что означает, что если мы объявим cn = n в начале программы, первое значение cn будет первым значением n, или это будет значение n, вычисленное в первом, в то время как l oop, что означает n / = 10.

Некоторые подсказки помогут ... Спасибо!

int n, cn, x=0,p=1;  

cin>>n;  

cn=n;  

while(n)  {   
    if (n%10>x) {x=n%10;}   
    n/=10;
} 

x++;  

while(cn)   {    
    n= n + cn%10 *p;   
    p*=x;    
    cn/=10;
}  

cout<<n; 

1 Ответ

1 голос
/ 03 мая 2020

Оператор присваивания " cn = n " равен

, временно присваивая значение n cn ,

до того, как n будет изменено в то время как l oop.

Вот программа с добавленными операторами печати, чтобы проиллюстрировать, как изменяются значения:

#include <iostream>
using namespace std;

int main() {
    int n, cn, x = 0, p = 1;
    cout << "Enter the value of n: ";
    cin >> n;  

    cout << " n = " << n << " , cn = " << cn << "\n";
    cout << "Temporarily assigning the value of n to cn \n";

    cn = n;  
    cout << " n = " << n << " , cn = " << cn << "\n";

    while(n)  {   
        if ( n%10 > x ) {
            x = n%10;
        }
        n /= 10;
    }

    x++;

    cout << "Intermediate value of n = " << n << "\n";
    while( cn ) {
        n = n+cn%10*p;   
        p *= x;
        cn /= 10;
    }
    cout<<"Final value of n = " << n << "\n";
    return 1;
}

Вывод:

Enter the value of n: 12345
 n = 12345 , cn = 0
Temporarily assigning the value of n to cn 
 n = 12345 , cn = 12345
Intermediate value of n = 0
Final value of n = 1865

Другой вопрос:

Что произойдет, если cn = n используется в первое утверждение программы?

IE,

int n, cn=n, x = 0, p = 1;

Ответ: Это назначит случайное значение cn.

Вот демонстрация того, что будет сделано с помощью оператора int n, cn = n :

#include <iostream>
using namespace std;

int main() {
    int n, cn=n, x = 0, p = 1;
    cout << "Enter the value of n: ";
    cin >> n;  

    cout << " n = " << n << " , cn = " << cn << "\n";

    while(n)  {   
        if ( n%10 > x ) {
            x = n%10;
        }
        n /= 10;
    }

    x++;

    cout << "Intermediate value of n = " << n << "\n";
    while( cn ) {
        n = n+cn%10*p;   
        p *= x;
        cn /= 10;
    }
    cout<<"Final value of n = " << n << "\n";
    return 1;
}

Вывод int n, cn = n:

Enter the value of n: 12345
 n = 12345 , cn = 4196992
Intermediate value of n = 0
Final value of n = 207740
...