Răspuns :
#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;
}
Vă mulțumim că ați ales să vizitați site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, vă rugăm să ne contactați. Revenirea dumneavoastră ne va bucura, iar pentru acces rapid, nu uitați să ne salvați la favorite!