2016-10-30 2 views
0

J'ai donc besoin d'aide pour cela. Je veux imprimer tous les entiers entre 2 et 2^20 qui sont des puissances entières de 2. J'ai compris que j'ai besoin d'augmenter la puissance de 1 à chaque fois mais je n'arrive pas à comprendre ce qui se passe dans la boucle interne . Je ne peux pas utiliser la pow() fonctionC++ Nested pour la boucle pour les exposants avec base/exposant

c = 2;  
cout << "\nPROBLEM C" << endl; 
for (int powerC = 1; powerC <= 20; powerC++) // powerC is exponent 
{ 
    cout << setw(5) << powerC << " "; 
    counterC++; 
    for (int x = 1; x <= 20; x++) // where I am having trouble with 
    { 
    c = (c*powerC); 
    cout << setw(5) << c; 
    } // end inner for loop 
    if (counterC % 8 == 0) 
    { 
     cout << endl; 
    } 
} 
cout << "\nNumber of numbers = " << counterC; 

Répondre

0

Ceci est beaucoup plus simple en utilisant l'opérateur <<.

Depuis 2 est 2^1, vous voulez imprimer tous les entiers de 2^1 à 2^20 inclusivement, ou 20 numéros:

int c = 2; 
for (int i=0; i<20; i++) 
{ 
    std::cout << c << std::endl; 

    c <<= 1; 
} 
+0

Merci, cela a fonctionné parfaitement. Cependant, je veux demander ce que fait exactement l'opérateur. Je n'ai jamais vu ça avant – csscrub

+0

C'est l'opérateur de quart gauche, regardez. Vous pouvez simplement remplacer cela par "c = c * 2". Même chose. –