Răspuns :
In primul rand gresesti pentru ca ai niste cazuri particulare cand nr1 si nr2 sunt 0, in al doilea rand gresesti pentru ca ai uitat ca poti avea si cifre de 0, iar cel mai mic numar nu poate incepe cu 0 deci rezolvarea se face astfel :
#include <fstream>
using namespace std;
int v[11], nr1, nr2, i, j, cif;
int main()
{
ifstream f("numere7.in");
ofstream g("numere7.out");
f >> nr1 >> nr2;
if(nr1 == 0 && nr2 == 0) {g << 0; return 0;}
if (nr1 == 0 && nr2 != 0) v[0] ++;
if (nr1 != 0 && nr2 == 0) v[0] ++;
while(nr1)
{
cif = nr1 % 10;
v[cif]++;
nr1 = nr1 / 10;
}
while(nr2)
{
cif = nr2 % 10;
v[cif]++;
nr2 = nr2 / 10;
}
if(v[0] > 0)
for(i = 1; i <= 9; i ++)
if(v[i] > 0)
{
g << i;
v[i]--;
break;
}
for(i = 0; i <= 9; i ++)
if(v[i] > 0)
for(j = 1; j <= v[i]; j ++)
g << i;
f.close();
g.close();
return 0;
}
#include <fstream>
using namespace std;
int v[11], nr1, nr2, i, j, cif;
int main()
{
ifstream f("numere7.in");
ofstream g("numere7.out");
f >> nr1 >> nr2;
if(nr1 == 0 && nr2 == 0) {g << 0; return 0;}
if (nr1 == 0 && nr2 != 0) v[0] ++;
if (nr1 != 0 && nr2 == 0) v[0] ++;
while(nr1)
{
cif = nr1 % 10;
v[cif]++;
nr1 = nr1 / 10;
}
while(nr2)
{
cif = nr2 % 10;
v[cif]++;
nr2 = nr2 / 10;
}
if(v[0] > 0)
for(i = 1; i <= 9; i ++)
if(v[i] > 0)
{
g << i;
v[i]--;
break;
}
for(i = 0; i <= 9; i ++)
if(v[i] > 0)
for(j = 1; j <= v[i]; j ++)
g << i;
f.close();
g.close();
return 0;
}
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Ne bucurăm dacă informațiile oferite v-au fost de ajutor. Pentru orice întrebare sau clarificare suplimentară, echipa noastră vă stă la dispoziție. Revenirea dumneavoastră ne onorează – nu uitați să ne salvați în lista de favorite!