Lasketaan, onko kahden potenssi ja kahden muuttujan avulla ylemmät potenssit.
#include <iostream>
#include <cmath>
using namespace std;
int main(){
 int luku = 16384;
 //Seuraavilla muuttujilla katsotaan, onko suuremmat potenssi.
 int maara_8 = 0;
 int maara_16 = 0;
 //Lasketaan, onko kahden potenssi.
 for (int x = 1; x < 100 && pow(2,x)<=luku; x++){
  maara_8++;
  maara_16++;
  //Lasketaan suuremmat potenssit.
  if (pow(2,x) == luku){
   cout << "Kahden potenssi" << endl;
   if (maara_16 == 2){
    cout << "Neljän potenssi" << endl;
   }
   if (maara_8== 3){
    cout << "Kahdeksan potenssi" << endl;
   }
   if (maara_8 == 6){
    cout << "8:n potenssi" << endl;
    cout << "64:n potenssi" << endl;
   }
   if (maara_16 == 4){
    cout << "Neljän potenssi" << endl;
    cout << "Kuudentoista potenssi" << endl;
   }
  }
  //Nollataan.
  if (maara_8 >= 6){
   maara_8 = 0;
  }
  if (maara_16 >= 4){
   maara_16 = 0;
  }
 }
 cout << "//" <<  endl;
 return 0;
}Onko tämä joku "teemme asiat mahdollisimman hankalasti / epäselvästi" harjoitus?
En näe mitään järkeä miksi emme pistäisi vaan tietokonetta laskemaan tuloksia, kuten alla. Tämä ilmoittaa myös oikean tuloksen luvulle 1. ( n^0 = 1 )
Tai no toivottavasti toimii, kun en testannut. (Tällä koneella ei ollut c++ -kääntäjää) :D
#include <iostream>
using namespace std;
int main(){
    int luku;
    cout << "Anna kokonaisluku: " << endl;
    cin >> luku;
    int tp;
    for (tp=0; luku != 1; tp++, luku>>=1)
    {
        if ((luku & 1) == 1 || luku == 0)
        {
            cout << "Ei kahden potenssi" << endl;
            return 0;
        }
    }
    for (int p=1, b=2; p<31; p++, b<<=1)
    {
        if (tp%p == 0) { cout << b << ":n potenssi" << endl; }
    }
    cout << "//" <<  endl;
    return 0;
}Aihe on jo aika vanha, joten et voi enää vastata siihen.