Tuesday, March 7, 2017

REZOLVARE CIFINIT PBINFO

ENUNT

Cerinţa

Se citește de la tastură un număr natural n, apoi n numere naturale. Să se afişeze cel mai mic număr care poate fi scris folosind prima cifră a numerelor citite.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi cele n numere naturale, separate prin spaţii.

Date de ieşire

Programul afișează pe ecran numărul MIN, cel mai mic număr care poate fi scris folosind prima cifră a numerelor citite.

Restricţii şi precizări

  • 0 < n < 1000
  • cele n numere citite vor fi nenule și mai mici decât 1.000.000.000


REZOLVARE
#include <iostream>
using namespace std;
int v[1001],w[1001],n,i,j,uc,d,k;
int main()
{
    cin>>n;
    for (i=1;i<=n;i++)
    {
        uc=0;
        cin>>v[i];
        while (v[i]!=0)
        {
            uc=v[i]%10;
            v[i]=v[i]/10;
        } //am aflat primele cifre de la fiecare nr
        w[i]=uc; //adaugam cifrele intr-un nou vector pentru a putea sorta mai tarziu
    }
    for (d=1;d<=n;d++) //aplicam algoritmul de sortare prin inversiuni sau interschimbare fara controlul terminarii
        for (k=1;k<=n;k++)
        if (w[d]<w[k]) //in cazul in care primul element e mai mare decat urmatorul, aplicam alg de interschimbare
    {
        w[0]=w[d]; //folosim w[0] ca auxiliar, pentru ca pozitia 0 nu este ocupata 
        w[d]=w[k];
        w[k]=w[0];
    }
    for (d=1;d<=n;d++) cout<<w[d]; //afisam noul numar compus din cifrele vectorului, am fi putut sa compunem numarul dar este mai simplu sa afisam elementele vectorului fara spatiu intre ele
    return 0;

}

No comments:

Post a Comment