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

7. Se citesc n numere naturale.. Să se afișeze cel mai mare număr par din șir. Ex pt n=7 și sirul 1,3,2,99,8,33,4 se va afișa 8.
8. Se citesc n numere naturale.. Să se afișeze cele mai mari 2 numere din șir. Ex pt n=7 și sirul1,3,2,99,8,33,4 se va afișa 99, 33.
9. Se citesc n numere naturale.. Să se afișeze câte numere din șir aparțin unui interval a,b citit. Ex pt a=10, b=20 n=8 și sirul 2,3,4,5,6,11,13,10 se va afișa 2
10.Se citesc n numere naturale. Să se afișeze câte elemente din șir au toate cifrele pare. Ex pt n=8 și sirul 12,20,123,220228,45,4,7,76,567,0 se va afișa 3 (20,220228,4).

Răspunsuri la întrebare

Răspuns de Apollyon
0

#include <iostream>

#include <algorithm>

using std::cout, std::cin, std::endl, std::size;

static int *creazaSir(const size_t &dimensiuneSir)

{

   int *sirNumere = new int[dimensiuneSir]; // alocă dinamic un șir de n numere

   for (size_t i = 0; i < dimensiuneSir; i++)

   {

       cout << "sirNumere[" << i << "] = ";

       cin >> sirNumere[i]; // și citești valorile

   }

   return sirNumere; // la final returnezi adresa șirului

}

static void problema7(int *sirNumere, const size_t &dimensiuneSir)

{

   int nrMax = sirNumere[0];

   for (size_t i = 0; i < dimensiuneSir; ++i)                        // parcurgi vectorul cu un for

       if (sirNumere[i] > nrMax && sirNumere[i] % 2 == 0)            // dacă numărul este mai mare decât primul element și este par

           nrMax = sirNumere[i];                                     // setezi noul maxim la sirNumere[i]

   cout << "Cel mai mare nr. par din sir este >> " << nrMax << endl; // la final afișezi

}

static void problema8(int *sirNumere, const size_t &dimensiuneSir)

{

   std::sort(sirNumere, sirNumere + dimensiuneSir); // sortezi șirul crescător, cel mai mare va fi pe ultima poziție iar al doilea

                                                    // cel mai mare va fi pe penultima poziție în vector

   cout << "Cel mai mare numar si al doilea cel mai mare sunt >> "

        << sirNumere[dimensiuneSir - 1] << " si " << sirNumere[dimensiuneSir - 2] << endl;

}

static void problema9(int *sirNumere, const size_t &dimensiuneSir)

{

   int a, b, contorNumere{};

   cout << "Introdu a si b (de ex 10 20) >> ";

   cin >> a >> b;                                // citești intervalul

   for (size_t i = 0; i < dimensiuneSir; i++)    // parcurgi vectorul

       if (sirNumere[i] > a && sirNumere[i] < b) // dacă numărul este inclus în interval

           ++contorNumere;                       // incrementezi contorul

   cout << "Sunt " << contorNumere << " numere intre " << a << " si " << b << endl;

}

static void problema10(int *sirNumere, const size_t &dimensiuneSir)

{

   int contorNumere{}, copieNumar;

   bool conditiePar{false};

   for (size_t i = 0; i < dimensiuneSir; i++)

   {

       copieNumar = sirNumere[i]; // salvăm numărul într-o copie ca să nu modificăm direct valoarea din vector

       while (copieNumar)         // cât timp copieNumar este diferit de 0

       {

           if ((copieNumar % 10) % 2 != 0) // dacă găsim o cifră impară nu mai are rost să continuăm căutarea

           {

               conditiePar = false; // deci setăm condiția de incrementare la false

               break;               // și ieșim din while

           }

           if (conditiePar == false) // setăm la true doar dacă conditiePar este false ( că dacă e true

                                    // nu are rost să setăm din nou la true )

               conditiePar = true;

           copieNumar /= 10; // împărțim numărul la 10 pentru a scăpa de ultima cifră ( altfel ar merge la infinit )

       }

       if (conditiePar == true) // dacă toate cifrele sunt pare

           ++contorNumere;     // incrementam contorul

       conditiePar = false;     // și resetăm condiția la false ( pentru următorul număr )

   }

   cout << "Sunt " << contorNumere << " numere cu toate cifrele pare!" << endl; // la final afișăm

}

int main()

{

   size_t n;

   cout << "Introdu dimensiunea sirului >> ";

   cin >> n;

   int *sirNumere = creazaSir(n);

   problema7(sirNumere, n);

   delete[] sirNumere;

   cout << "Introdu dimensiunea sirului >> ";

   cin >> n;

   sirNumere = creazaSir(n);

   problema8(sirNumere, n);

   delete[] sirNumere;

   cout << "Introdu dimensiunea sirului >> ";

   cin >> n;

   sirNumere = creazaSir(n);

   problema9(sirNumere, n);

   cout << "Introdu dimensiunea sirului >> ";

   cin >> n;

   sirNumere = creazaSir(n);

   problema10(sirNumere, n);

   delete[] sirNumere;

   return 0;

}

Alte întrebări interesante