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

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ăspunsuri la întrebare

Răspuns de Zicun
5

#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;  

}


Zicun: Whoops.. nu am fost atent, avem nevoie de cifre, nu de numere
Zicun: Vom modifica imediat
lucaciucandrei: conditii inutile
lucaciucandrei: si e de 0 puncte pe pbinfo
Zicun: Conditii inutile? Am pus conditiile din problema
lucaciucandrei: sunt destul de sigur ca nu :)) oricum e de 0 puncte
v1tam1na: Sunt sigur ca pbinfo mai da uneori 70 80p cand ai facut problema fara greseli.
lucaciucandrei: iar eu sunt sigur ca nu :)
Răspuns de lucaciucandrei
2

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;

}


printess199: Multumesc mult! E de 100 de puncte!
lucaciucandrei: cu placere! coroana!
Alte întrebări interesante