👤

sa se determine voarea cu cele mai multe cifre dintr un vector cu n nr întregi.


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;

}