Pierwszym najważniejszym twoim błędem było utworzenie zmiennej b, która pozostawała nie zmieniona, a to na jej podstawie ustalałeś parzystość poszczególnych liczb. Ja bym to napisał tak:
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int a;
int i=0;
int j=0;
cout << "Podaj liczbe calkowita: ";
cin >> a;
while (a>0)
{
if((a%10)%2==0){
i++;
}else{
j++;
}
a/=10;
}
if (i>j)
cout << "Wiecej jest cyfr parzystych niz nieparzystych." << endl;
else if (i==j)
cout << "Cyfr nieparzystych i parzystych jest tyle samo." << endl;
else
cout << "Cyfr nieparzystych jest wiecej niz parzystych." << endl;
return 0;
}
A twoim sposobem tak:
#include <iostream>
#include <cstdlib>
using namespace std;
int a, b;
int i=0;
int j=0;
int main()
{
cout << "Podaj liczbe calkowita: ";
cin >> a;
while (a>0)
{
b=a%10;
if (b%2==0)
{
i++;
a/=10;
}
else
{
j++;
a/=10;
}
}
if (i>j)
cout << "Wiecej jest cyfr parzystych niz nieparzystych." << endl;
else if (i==j)
cout << "Cyfr nieparzystych i parzystych jest tyle samo." << endl;
else
cout << "Cyfr nieparzystych jest wiecej niz parzystych." << endl;
return 0;
}