Realizați un algoritm C++ care citește numere naturale până la întâlnirea unui număr putere a lui 2 pe care-l afișează.
Exemple :
Date de intrare - - - - - - - - Date de ieșire
11,5,18,1024 - - - - - - - - - - - - - - 1024
3,9,101,8 - - - - - - - - - - - - - - - - - 8
31,43,1001,1 - - - - - - - - - - - - - - - 1
Răspunsuri la întrebare
Răspuns:
În principiu, faci o funcție putere cu un parametru întreg. Funcția va face împărțiri succesive până când numărul este 0. Dacă numărul este 0, funcția returnează 1 (adică numărul este o putere a lui 2), altfel returnează 0;
int putere (int n)
{
int s = n;
while (s != 0)
{
if (s % 2 == 0) s/=2;
}
else break;
if (s == 0) return 1;
else return 0;
}
Răspuns:
#include <iostream>
using namespace std;
int main()
{
int i, a, s;
for (i=1; i>0; i=i){
cin>>s;
a=s;
while(i>0){
if (s==1){i=-1; break;} else
if (s%2==0) s=s/2; else break;}
}
cout<<a;
return 0;
}
Explicație:
sunt multe metode mai simple, precum raspunsul lui "ionatanferariu", dar daca cea mai simpla rezolvare, care sa inteleaga toti, ma gandesc ca poate fi asta (putem face si cu goto, s.a)
Teoria: fix ca exercitiul anterior, aici se va repeta de infinite ori pana cand nu va gasi un numar care este o putere lui 2, (astfel cand gasim un astfel de numar, oprim instructiunea while si egalam i=-1, astfel vom opri si instructiunea for)