Să se scrie un program care citește un șir de n numere naturale și afișează pe ecran elementele din șir care au mai multe cifre pare decât impare.
Cerința:
Să se scrie un program care citește un șir de n numere naturale și afișează pe ecran elementele din șir care au mai multe cifre pare decât impare respectiv 0 dacă nu există nici un astfel de număr.
Numerele vor fi despărțite printr-un spațiu.
Date de intrare:
Programul citește de la tastatură numărul n, iar apoi n numere naturale nenule.
Date de ieşire:
Programul scrie pe ecran elementele din șir care au mai multe cifre pare decât impare respectiv 0 dacă nu există nici un astfel de număr.
Restricţii şi precizări:
1 ≤ n ≤ 1000
cele n numere citite vor fi mai mici decât 2.000.000.000
Exemplu:
Intrare
5
72 75 142 75 32
Ieșire
142
Răspunsuri la întrebare
Codul e in c++, si e mai lung decat ma asteptam sa iasa=)) daca ai intrebari/nelamuriri, lasa-le aici si o sa incerc sa revin=)
Spor
#include <iostream>
int checkParImpar(int nr)
{
int flagP=0, flagimP=0;
while(nr!=0)
{
if(nr%2==0) flagP++; // verificam daca cifra e para si o contorizam
else flagimP++; // daca nu e para, atunci duh e impara, o bagam aci
nr = nr/10; // dupa verificarea cifrei o dam la o parte
}
if(flagP>flagimP) return 2; // functia returneaza 2 daca numarul are mai multe cifre pare decat impare
else if(flagP<flagimP) return 1; // functia returneaza 1 daca numarul are mai multe cifre impare decat cifre pare
else if(flagP==flagimP) return 0; // functia returneaza 0 daca numarul de cifre pare si impare e acelasi
}
int main()
{
int n, a;
std::cin >> n;
int flag=0;
for(int i=0;i<n;i++)
{
std::cin >> a;
if(checkParImpar(a)==2)
{
std::cout << a << " ";
flag++;
}
}
if (flag==0) std::cout << 0;
return 0;
}