Ce este gresit la codul meu? Este problema 633 de pe pbinfo: Se dă un șir cu n elemente, numere naturale. Determinați diferența în valoare absolută dintre numărul de valori pare din șir și numărul de valori impare din șir. Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând elementele șirului.Programul va afișa pe ecran numărul C, reprezentând valoarea cerută.
Restricții și precizări
1 ≤ n ≤ 1000
cele n numere citite vor fi mai mici decât 1.000.000.000


Exemplu

Intrare

5
15 245 28 33 11

Ieșire

3

Explicație

Sunt 4 numere impare și un număr par în șir, deci diferența este 3.


#include

using namespace std;

int main()
{
int n, v[1001], c, a, b;
cin>>n;
for(int i=0;i<=n;i++)
cin>>v[i];
a=0;
b=0;
if(v[i]%2==0)
{
a=1;
a++;
}
else {
b=1;
b++;
}
c=a-b;
cout< return 0;
}

Răspuns :

#include <iostream>

using namespace std;

int main()

{

   int n,i,cntp=0,cnti=0,v[1002];

   cin>>n;

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

 cin>>v[i];

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

       if (v[i]%2==0)

           cntp++;

       else

           cnti++;

if (cntp>cnti)

 cout<<cntp-cnti;

else

     cout<<cnti-cntp;

   return 0;

}

Explicație:

cntp = numarul de valori pare din vector

cnti = numarul de valori impare din vector

Iti cere valoarea absolută. Poti folosi in loc de acel if funcția abs.

Ai fi scris cout<<abs(cnti,cntp); //Ar fi trebuit inclusa si biblioteca cmath