se citeste un numar cu multe cifre diferite de zero. Sa se afiseze cel mai mic numar cu cifre distincte care se poate forma cu cifrele numarului initial .Informatica clasa9
Răspunsuri la întrebare
#include <iostream>
using namespace std;
int main()
{
int n;
int min1=10,min2=10,min3=10;
cin >> n;
while(n%10){
int c = n%10;
if(c<min1){
min3 = min2;
min2 = min1;
min1=c;
}else if(c != min1 && c<min2){
min3 = min2;
min2 = c;
}else if (c != min1 && c!= min2 && c< min3)
min3=c;
n/=10;
}
cout << min1<<min2<<min3;
}
Cu vectori:
#include <iostream>
using namespace std;
int frecv[10];
int main()
{
int n;
cin >> n;
while(n%10){
frecv[n%10]++;
n/=10;
}
int l = 0;
for(int i = 1; i < 10&&l<3;i++){
if(frecv[i])
{
cout << i;
l++;
}
}
}
Răspuns:
o variantă ce nu foloseste vectori ... cred simplă :))) pt un elev de clasa a 9-a. Am semnaliyat în variabile corespunzătoare dacă se întîlneşte cifra respectivă şi dacă da, se va afişa
Explicație:
#include <iostream>
using namespace std;
int main()
{
long long num, cif, u,d,t,p,c,s,st,o,n;
cout << "numar="; cin >> num;
while (num)
{
cif=num%10;
if (cif==1) u=1;
if (cif==2) d=1;
if (cif==3) t=1;
if (cif==4) p=1;
if (cif==5) c=1;
if (cif==6) s=1;
if (cif==7) st=1;
if (cif==9) o=1;
if (cif==9) n=1;
num=num/10;
}
cout << "numar minim cu cifre distincte: ";
if (u==1) cout << 1;
if (d==1) cout << 2;
if (t==1) cout << 3;
if (p==1) cout << 4;
if (c==1) cout << 5;
if (s==1) cout << 6;
if (st==1) cout << 7;
if (o==1) cout << 8;
if (n==1) cout << 9;
}