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.