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 pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile și inspiraționale. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, suntem aici pentru a vă ajuta. Ne face plăcere să vă revedem și vă invităm să adăugați site-ul nostru la favorite pentru acces rapid!