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

În fișierul numere.in avem pe prima linie un număr natural n, iar pe a doua linie n numere naturale. Se cere:
a) să se citească cele n numere într-un tablou unidimensional
b) să se calculeze suma elementelor care conțin cel puțin o cifră egală cu 5
c) să se adauge după cel mai mic număr din tablou, dublul său
d) să se adauge după fiecare element par, inversul său

Răspunsuri la întrebare

Răspuns de adrianbuf18
1

#include <iostream>

#include <fstream>

using namespace std;

ifstream a("numere.in");

int main()

{

   int n, suma=0;

   a >> n;

   int tablou_unid[n];

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

       a >> tablou_unid[i];

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

   {

       int numar_curent=tablou_unid[i];

       while (numar_curent!=0)

       {

           if (numar_curent%10==5)

           {

               suma=suma+tablou_unid[i];

               numar_curent=0;

           }

           numar_curent=numar_curent/10;

       }

   }

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

       cout << tablou_unid[i] << " ";

   cout << endl;

   //creez alt tablou pentru cerinta c), noul tablou are evident un element in plus

   int tablou[n+1];

   int adresa_minim=0;

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

   {

       tablou[i]=tablou_unid[i];

       if (tablou[adresa_minim]>tablou[i])

           adresa_minim=i;

   }

   for (int i=n-1; i>adresa_minim; i--)

       tablou[i+1]=tablou[i];

   tablou[adresa_minim+1]=2*tablou[adresa_minim];

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

       cout << tablou[i] << " ";

   cout << endl;

   //creez alt tablou pentru cerinta d)

   //noul tablou are nevoie de 2n elemente

   //pentru cazul in care fiecare element este par

   int tablou2[2*n];

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

       tablou2[i]=tablou_unid[i];

   int noul_n=n;

   for (int i=0; i<noul_n; i++)

   {

       if (tablou2[i]%2==0)

       {

           int invers=0, numarcurent=tablou2[i];

           for (int j=noul_n; j>i; j--)

           {

               tablou2[j+1]=tablou2[j];

           }

           noul_n=noul_n+1;

           while (numarcurent!=0)

           {

               invers=invers*10+numarcurent%10;

               numarcurent=numarcurent/10;

           }

           tablou2[i+1]=invers;

           i++;

       }

   }

   for (int i=0; i<noul_n; i++)

       cout << tablou2[i] << " " ;

   cout << endl;

   return 0;

}

Alte întrebări interesante