Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: C++: Kahden ja ylemmät kantaluvun potenssi

JRokka [16.05.2020 13:39:05]

#

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;
}

Grez [16.05.2020 14:26:47]

#

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;
}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta