👤

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.


Răspuns :

#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;
}

Vă mulțumim pentru vizita pe platforma noastră dedicată Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, nu ezitați să ne contactați. Așteptăm cu entuziasm să reveniți și vă invităm să ne adăugați la lista de favorite!


Viz Lesson: Alte intrebari