👤

Problema 3664 pbinfo - IMI DA 80 PUNCTE
Cerința
Se dau n numere naturale. Determinaţi câte cifre pare şi câte cifre impare se află în total în cele n numere.

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

Date de ieșire
Programul va afișa pe ecran numerele p, şi i, separate prin spaţiu, în această ordine, reprezentând numărul de cifre pare respectiv numărul de cifre impare calculate.

Restricții și precizări
1 ≤ n ≤ 10
cele n numere citite vor fi mai mici decât 1.000.000.000



Exemplu
Intrare

3
11 30 3
Ieșire

1 4




Eu am rezolvat-o asa, dar imi da 80 puncte:
#include
using namespace std;

int main () {
long long int i, n, p, j, x;
p=0;
i=0;
cin>>n;
for (j=1; j<=n; j++){
cin>>x;
while (x>0){
if (x%10%2==0)
p++;
else
i++;
x=x/10;
}
}
cout<

return 0;
}


Răspuns :

#include <iostream>

using namespace std;

int main()

{

   long long int n,p,i,k,j;

   p=0;

   i=0;

   cin>>n;

   for(j=1;j<=n;j++)

   {

       cin>>k;

       if(k==0)

       {

           p++;

       }

       while(k!=0)

       {

           if(k%10%2==0)

           {

               p++;

           }

           else

           {

               i++;

           }

           k=k/10;

       }

   }

   cout<<p<<" "<<i;  

}

iti da 80 de puncte deoarece nu ai tratat cazul in care numarul citit poate fi 0, adica o cifra para

am folosit codul tau, inlocuind "while (x!=0)" cu "do...while (x!=0)"

diferenta dintre acestea doua este ca la la while, daca x e 0 nu va intra pe while, iar la do while nu conteaza ce cifra e, prima data se executa instructiunile din interior, apoi se verifica conditia while-ului

#include<iostream>

using namespace std;

int main () {

   long long int i, n, p, j, x;

   p=0;

   i=0;

   cin>>n;

   for (j=1; j<=n; j++){

       cin>>x;

       do{

           if (x%10%2==0)

               p++;

           else

               i++;

           x=x/10;

       }while (x!=0);

   }

   cout<<p<<' '<<i;

   return 0;

}