Informatică, întrebare adresată de WolfyCute, 8 ani în urmă

VA ROG URGENT DAU COROANA

5. Se consideră un vector x cu n (1<=n<=100) componente de tip longint (long). Se cere să se afișeze numărul cel mai mare format cu prima cifră a fiecărei componente din x.
Exemplu:
Pentru n=4 și componentele
2341 789 1998 2000 se va afișa: 7221

Răspunsuri la întrebare

Răspuns de boiustef
1

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   int n;

   cin >> n;

   long long v[n];

   for (int i=0; i<n; i++) {

       cin >> v[i];

   }

   long long a;

   int vc[10]={0};

   for (int i=0; i<n; i++) {

       a=v[i];

       while (a>9) {

           a/=10;

       }

       ++vc[a];

   }

   for (int i=9; i>=0; i--) {

       if (vc[i]) {

           for (int j=1; j<=vc[i]; j++) {

               cout << i;

           }

       }

   }

   return 0;

}

Explicație:

Am ales pentru numerele din vector tipul long long int, deoarece în c++ tipurile int și long int sunt echivalente...

Se completează vectorul de frecvență a primelor cifre ...

Succese!

Răspuns de thet0mmy1407
0

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   long X[100], AUX[100], n, i, j, aux, nou = 0;

   cin >> n;

   for(i = 1; i <= n; i++)

       AUX[i] = 0;

   for(i = 1; i <= n; i++)

       cin >> X[i];

   int x = 1;

   for(i = 1; i <= n; i++){

       while(X[i] > 9){

           X[i] = X[i] / 10;

       }

       AUX[x] = X[i] % 10;

       x++;

   }

   for(i = 1; i < n; i++)

           for(j = i + 1; j <= n; j++)

               if(AUX[i] < AUX[j]){

                   aux = AUX[i];

                   AUX[i] = AUX[j];

                   AUX[j] = aux;

               }

   for(i = 1; i <= n; i++)

           nou = nou * 10 + AUX[i] % 10;

   cout << nou;

   return 0;

}

Explicație:

Citim vectorul, dar inainte de asta initializam un vector AUXILIAR cu toate elementele 0.

In al 3-lea for taiem toate cifrele numarului pana la ultimul, apoi il bagam intr-un AUX[x], unde x e initial 1 si creste mereu, adica o sa fie in final aceeasi valoare cu n.

Urmatorul pas este sa ordonam descrescator elementele noului vector si sa creem numarul.

Vectorul ordonat o sa fie 7 2 2 1, apoi incepem sa construim: nou = 0 + 7

nou = 7 * 10 + 2 = 72 etc

Alte întrebări interesante