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.