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
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];
}
}
{
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
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă