Răspuns :
Program C++ :
#include <iostream>
using namespace std;
int main(){
int n, i, x, cp, cifmax=0, cifcur, val=0;
//Citeste nr valori
cin >> n;
for(i=1;i<=n;i++){
//Citeste valoarea si fa o copie
cin >> x;
cp=x;
//Determina numarul de cifre ale valorii curente
cifcur=0;
while(x){
cifcur++;
x=x/10;
}
//Daca numarul de cifre ale valorii curente depasteste maximul retine maximul si valoarea
if(cifcur>cifmax){
val = cp;
cifmax=cifcur;
}
}
//Afiseaza rezultat
cout << val;
}
Nota :
Se considera ca exista o singura valoare care are numarul de cifre maxim. Daca exista mai multe astfel de numere se va afisa prima valoare cu aceasta proprietate. Daca se doreste ultimul numar cu aceasta proprietate se va schimba "if(cifcur>cifmax)" cu "if(cifcur>=cifmax)".
Daca exista o singura valoare cu proprietatea ceruta (iar problema e restrictionata doar pentru numere naturale) programul este echivalent cu determinarea valorii maxime dintr-un vector (numarul cu cele mai multe cifre este cel mai mare).
mai simplu, aflii maximul din vector (logic canr maxim are cele mai multe cifre)
vom folosi abs() (modul) pentru numerele negative, deoarece pe noi ne intereseaza numarul maxim de cifre, nu semnul numarului
nu ai specificat daca valorile sunt distince, deci algoritmul meu iti memoreaza si cea mai mare valoare cu cele mai multe cifre (daca sunt toate pozitive) ceea ce nu e gresit pe enuntul problemei tale.
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int n,v[101],max;
cin>>n;
cin>>max;
max=abs(max);
for(int i=2;i<=n;i++){
cin>>v[i];
if(abs(v[i])>abs(max))
max=v[i];
}
cout<<max;
return 0;
}
Vă mulțumim pentru vizita pe platforma noastră dedicată Informatică. Sperăm că informațiile oferite v-au fost utile. Dacă aveți întrebări sau aveți nevoie de sprijin suplimentar, vă încurajăm să ne contactați. Revenirea dumneavoastră ne bucură, iar dacă v-a plăcut, nu uitați să adăugați site-ul nostru la favorite!