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

Subprogramul pDoi are un singur parametru, n, prin care primește un număr natural (n∈[1,10^9]).
Subprogramul returnează cea mai mare valoare din intervalul [1,n], cu proprietatea că este o putere a
lui 2.
Scrieți definiția completă a subprogramului.
Exemplu: dacă n=20, subprogramul returnează 16.
Rezolvare in C++ cu explicatii ! Multumesc anticipat !

Răspunsuri la întrebare

Răspuns de ploPLO123
5

Răspuns:

int pDoi( int n ) {

   int p2 = 1;

   while ( p2 * 2 <= n )

       p2 *= 2;

   return p2;

}

Explicație:

/// p2 este o putere a lui 2, initial 1 ( cea mai mica putere a lui 2 )

daca am mari puterea si ar deveni mai mare decat n, atunci bucla se opreste

Daca nu, puterea se mareste si bucla se reia

Se returneaza in final puterea

Nu-ti face griji de depasiri, urmatoarea putere dupa 1e9 incape in int


catalintalent248: Ce inseamna p2*=2? Mai trebuia sa urmeze ceva dupa * ?
ploPLO123: p2*=2 înseamnă p2 = p2 * 2 doar că se scrie mair rapid
Alte întrebări interesante