infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Alex Alex din Octombrie 18, 2016, 17:15:58



Titlul: Ajutor subprogram
Scris de: Alex Alex din Octombrie 18, 2016, 17:15:58
Salutare !
Am o problema de rezolvata care aparent pare a fi foarte simpla.
"Să se scrie o funcție C++ care să returneze cel mai mare număr care se poate scrie cu cifrele unui număr natural transmis ca parametru."
Eu m-am gandit sa inserez cifrele nr. intr-un vector iar apoi sa il sortez descrescator. Pare foarte simplu, dar nu inteleg de ce nu imi afiseaza un rezultat corect. Dupa compilare imi apare mereu rezultatul "0" daca n>9.

Cod:
int cmmnr(int n)
{
    int v[100],i,t,k=0;
    if(n<=9)
        return n;
    while(n){
        t = n%10;
        n/=10;
        k++;
    }
    while(n){
        for(i=0;i<k;i++)
            v[i] = n%10; // copiez cifrele lui n in vector
      n/=10;
    }
   //sortez elem vectorului descrescator
    int aux,ok;
    do{
        ok = 1;
        for(i=0;i<n-1;i++)
        if(v[i]<v[i+1]){
            ok = 0;
            aux = v[i];
            v[i] = v[i+1];
            v[i+1] = aux;
        }
    }while(ok!=1);

    for(i=0;i<k;i++)
        return v[i]; // afisez
}

Unde am gresit ?
Va multumesc anticipat !


Titlul: Răspuns: Ajutor subprogram
Scris de: Gavrila Vlad din Octombrie 18, 2016, 18:26:58
Hint ca sa gasesti singur greseala: dupa ce se executa primul while, ce valoare are variabila n?


Titlul: Răspuns: Ajutor subprogram
Scris de: Alex Alex din Octombrie 18, 2016, 21:38:33
Multumesc Gavrila Vlad, n va fi 0.