Informatică, întrebare adresată de elenacansys, 8 ani în urmă

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​

Anexe:

Răspunsuri la întrebare

Răspuns de ionatanferariu
1

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;

}


gugleadennis88: fata e clasa 5, nu cred ca in clasa 5, se invata functiile
gugleadennis88: dar frumoasa rezolvare
ionatanferariu: N-am știut ce clasă e, nu era specificat. Am făcut la modul cel mai simplu posibil.
elenacansys: mulțumesc pentru răspuns
Răspuns de gugleadennis88
1

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)

Alte întrebări interesante