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
n va fi număr natural mai mic 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.
artur99:
relativ usor :D pui cifrele intr-un vector, il sortezi crescator, iei de la coada primele k cifre si faci un nr din ele
Răspunsuri la întrebare
Răspuns de
4
#include <iostream>
using namespace std;
const int NMAX = 10;
void numar(int n, int k, int &x)
{
int * nr = new int[NMAX] ();
int r = 0;
x = 0;
while(n) {
(*(nr + n % 10))++;
n /= 10;
}
for(size_t i=10; i--;)
while(*(nr + i) && (++r <= k))
x = x * 10 + i, (*(nr + i))--;
delete[] nr;
return;
}
int main()
{
int n, k, x = 0;
cin >> n >> k;
numar(n, k, x);
cout << x << '\n';
return 0;
}
using namespace std;
const int NMAX = 10;
void numar(int n, int k, int &x)
{
int * nr = new int[NMAX] ();
int r = 0;
x = 0;
while(n) {
(*(nr + n % 10))++;
n /= 10;
}
for(size_t i=10; i--;)
while(*(nr + i) && (++r <= k))
x = x * 10 + i, (*(nr + i))--;
delete[] nr;
return;
}
int main()
{
int n, k, x = 0;
cin >> n >> k;
numar(n, k, x);
cout << x << '\n';
return 0;
}
x va avea valoarea 975.", Sincer sa fiu nu-mi plac functiile astea deloc, mai bine returnezi ceva si valoarea returnata o setezi la o variabila. Oricum eu de obicei pun totul global cand rezolv probleme de algo :))
Alte întrebări interesante
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
9 ani în urmă
Istorie,
9 ani în urmă
Limba română,
9 ani în urmă