Informatică, întrebare adresată de carolmd99, 9 ani în urmă

Cerinţa
Să se scrie o funcție C++ care primește ca parametri două numere n și k și determină cel mai mare număr care poate fi scris cu k cifre ale lui n. Funcția va întoarce rezultatul prin intermediul unui parametru de ieşire.

Restricţii şi precizări
numele funcției va fi numar
funcția va avea trei parametri: primul parametru reprezintă numărul n;al doilea parametru reprezintă numărul k; iar al treilea va reprezenta valoarea determinată de funcție
toți parametrii vor fi numere naturale nenule mai mici decât 2.000.000.000
n va avea cel puțin k cifre

Exemplu
După apelul

view sourceprint?
1.
numar(27594 , 3 , x);
x va avea valoarea 975.

Important
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.

Răspunsuri la întrebare

Răspuns de Razzvy
11
void numar(int n, int k, int & x)
{
int v[11]; //In acest vecot vom stoca fiecare cifra, dar invers, iar in v[0] vom stoca numarul de cifre, astfel pentru 1239, vom avea vectorul: 4 9 3 1 2
v[0] = 0;
while(n)
{
   v[0]++;
   v[v[0]] = n % 10;
   n /= 10;
}

//Facem sortarea pentru cele mai mari k, elemente, cele de care avem nevoie
for(int i = 1; i <= k; ++i)
{
   for(int j = 1; j < v[0]; ++j)
      if(v[j] > v[j + 1])         //Elementele cele mai mari vor fi "impinse" la capatul vectorului
         swap(v[j], v[j + 1]); //Interschimba cele doua elemente
}

//Trecerea din vector in numar, doar pentru cele mai mari k cifre
x = 0;
for(int i = v[0]; i > v[0] - k; --i)
{
   x = x * 10 + v[i];
}
}
Alte întrebări interesante