Răspuns :
Imi e putin cam greu sa imi dau seama ce ai gresit, dar am reusit eu sa o rezolv, poate iti dai tu seama care a fost problema la tine.
#include<iostream>
using namespace std;int n,mi,p,aux,c, pAux = 1, pX = 1;
int main()
{
cin>>n;
if(n<=9){cout << "0";}
else {mi=10;}
aux=n;
while(aux!=0)
{
c=aux%10;
aux=aux/10;
if(c<mi) {mi=c;}
}
aux=n;
while (aux != 0)
{
aux /= 10;
pAux *= 10;
}
p=pAux;
aux=n;
while(p >= 10)
{
p /= 10;
pX *= 10;
c=(n/p)%10;
if (c == mi)
{
cout << (n / (p*10))*(pAux/pX)+n%p;
break;
}
}
return 0;
}
Unde : n = numarul citit, mi = cifra minima din numar, p = 10^nr cifre, c = cifra, in pAux se tine valoare lui p deoarece e necesara la final, pX = 10 ^ nr de cifre inainte de cea mai mica cifra + 1.
Sa zicem ca numarul e 423234.
mi = 1
p = 10000
pAux =1000000
pX = 100
Numarul va fi : 4 * 1000 + 3234 adica 423234;
Deci eu am luat cea mai mica cifra de la stanga la dreapta si am scos-o din numar. Sper ca nu am uitat de vreun caz particular :)
#include<iostream>
using namespace std;int n,mi,p,aux,c, pAux = 1, pX = 1;
int main()
{
cin>>n;
if(n<=9){cout << "0";}
else {mi=10;}
aux=n;
while(aux!=0)
{
c=aux%10;
aux=aux/10;
if(c<mi) {mi=c;}
}
aux=n;
while (aux != 0)
{
aux /= 10;
pAux *= 10;
}
p=pAux;
aux=n;
while(p >= 10)
{
p /= 10;
pX *= 10;
c=(n/p)%10;
if (c == mi)
{
cout << (n / (p*10))*(pAux/pX)+n%p;
break;
}
}
return 0;
}
Unde : n = numarul citit, mi = cifra minima din numar, p = 10^nr cifre, c = cifra, in pAux se tine valoare lui p deoarece e necesara la final, pX = 10 ^ nr de cifre inainte de cea mai mica cifra + 1.
Sa zicem ca numarul e 423234.
mi = 1
p = 10000
pAux =1000000
pX = 100
Numarul va fi : 4 * 1000 + 3234 adica 423234;
Deci eu am luat cea mai mica cifra de la stanga la dreapta si am scos-o din numar. Sper ca nu am uitat de vreun caz particular :)