Cerința
Se dau n numere naturale. Se construiește o valoare selectând de la fiecare număr cifra maximă. Determinați pătratul acestei valori.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.
Date de ieșire
Programul va afișa pe ecran valoarea cerută.
Restricții și precizări
2 ≤ n ≤ 9
cele n numere citite vor fi mai mici decât 1.000.000.000.000.000.000.
Poate cineva sa imi corecteze co dul pentru ca atunci cand bag in code blocks imi da rezultatul bun pentru n=2 dar nu si pentru n=3.
#include
using namespace std;
int main()
{ int n,m,x,maxi,p,uc;
cin>>n;
m=0;
p=1;
while(n>0)
{
cin>>x;
maxi=0;
while(x!=0)
{
uc=x%10;
if(uc>maxi)
maxi=uc;
x=x/10;
}
m=m*p+maxi;
p=p*10;
n=n-1;
}
cout<
return 0;
}
Răspunsuri la întrebare
Ti-am scris in mare pseudocod combinat cu java
//Citesti de la tastatura cate numere n vrei sa ai (nu mai scriu codul pentru asta)
//Dupaia verifici ca 2<=n<=9
if(n<=2 || n>=9 ) System.out.println("nu sunt cate numere trebuie");
else{
//Citesti cu un for vectorul de numere a[n] (nu mai scriu nici pt asta codul)
int a[n];
Ex: pt n=3
a[0] = 123; a[1] = 45321; a[2] = 451;
int maxim = 18 ; //numarul poate sa aiba maxim 18 cifre
int max[maxim]; //folosim pentru a afla maximul fiecarui numar (spre ex max[0] va fi maximul primului numar, max[1] maximul celui de-al doilea numar)
int c[maxim]; //vector in care o sa salvam fiecare cifra dintr-un numar
for(int k=0 ; k<n; k++) //trecem prin toate numerele
for(int i=0; i<maxim ; i++) {
c[i] = a[k] % 10; //ia ultima cifra
if ( c[i] > max[k] ) max[k] = c[i] ; //cauta maximul si il pune in max[k]
if (a[k] / 10 == 0) break; //daca numarul ajunge la o cifra atunci iese din bucla for i
a[k] = a[k] / 10; //face numarul a[k] sa fie fara ultima cifra
}
Acum stii fiecare maxim din fiecare numar si le unesti toate intr-un text
String nr_final = ""+max[0];
for(int j=1;j<n;j++){
nr_final = ""+nr_final+max[j];
}
System.out.println("Nr final="+nr_final);
}
Poti daca mai vrei sa convertesti dupaia stringul inapoi in int.