Salutare!
Am urmatoarea problema:
Fie un tablou unidimensional cu n elemente valori naturale. Sa se ordoneze descrescator aceste valori, dupa numarul de cifre distincte pe care le contin.
Exemplu: Pentru n=7 si A=(334, 124, 21, 34, 222, 1, 38=9) se va afisa:
124 334 21 34 39 222 1
Eu am scris codul asta:
#include <iostream>
using namespace std;
int main()
{
int n,v[20],nr=0,t,i,aux,ok;
cout << "n="; cin >> n;
for(i=0;i<n;i++)
cin >> v[i];
for(i=0;i<n;i++)
while(i!=0)
{
t = i%10;
i = i/10;
nr = nr+1;
}
do{
ok = 1;
for(i=0;i<n;i++)
{
while(i!=0)
{
t = i%10;
i = i/10;
nr = nr+1;
}
if(nr[v[i]]>nr[v[i+1]])
{
aux = v[i];
v[i] = v[i+1];
v[i+1] = aux;
ok = 0;
}
}
}while(ok!=1);
for(i=n;i>=0;i--)
cout << v[i] << " ";
return 0;
}
Primesc o eroare de sintaxa la linia 32. Am incercat in mai multe moduri dar pur si simplu nu reusesc sa rezolv problema.
Eu m-am gandit ca dupa ce citesc vectorul, va trebui sa numar ciferele fiecarei componente si sa afisez componenta(v[ i ]) daca nr cifrelor sale este mai mare decat ale urmatoarei componente(v[i+1]).
Dar nu stiu cum sa ma exprim in scris. Nu stiu cum ii spun calculatorului sa faca asta.