Zliczanie liczb parzystych w zapisie dziesiętnym.

0

Witam jak to zrobić lepiej?

#include<iostream>
#include<iomanip>

using namespace std;
int main()
{
int a,c,b,licznik=0;

cout<<"Podaj a:";
cin>>a;

if(a>10)
{
c=a/10;
b=a%10;
if(c%2==0 && b%2==0)
licznik=licznik+2;
else if(c%2>0 && b%2==0)
    licznik=licznik+1;
else if(c%2==0 && b%2>0)
    licznik=licznik+1;
}
else if(a<10 && a%2==0)
licznik=licznik+1;


cout<<"W zapisie sa "<<licznik<<" liczby parzyste"<<endl;


system("pause");
return 0;
}
0

lepiej będzie tak

// to
licznik = licznik +1;
// zamień na
licznik += 1; 
// Oraz zatrzymanie programu zamiast system("pause") na
cin.sync();
cin.get();
2

Tak w ogóle to co to ma robić? Domyślam się,że zliczać cyfry (nie liczby) parzyste w zapisie dziesiętnym podanej liczby, tak?
W takim razie trochę chyba przedobrzasz z tymi if'ami.
Raz,że masz ograniczenie do dwucyfrowych liczb, dwa,że wygląda to brzydko.

 
#include<iostream>

using namespace std;

int main()
{
    int a;
    int licznik=0;

    cout<<"Podaj a:";
    cin>>a;

    while(a)
    {
        if(a%2 == 0) licznik++;
        a=a/10;
    }

    cout<<"Ilosc cyfr parzystych w zapisie liczby: "<<licznik<<endl;

    cin.sync();
    cin.get();
    return 0;
}

Nie zgrabniej?

0
Jadeszek napisał(a)

Nie zgrabniej?

do
    licznik += !(a%2);
while(a /= 10);

Nie zgrabniej?

1
blee napisał(a)

Nie zgrabniej?
Najzgrabniej:

b;main(a){printf("Podaj a:");scanf("%i",&a);do b+=!(a&1);while(a/=10);printf("Ilosc cyfr parzystych w zapisie liczby: %i\n",b);}

PS. Sorry. Nudziło mi się.

0
lukasz1235 napisał(a)

Najzgrabniej:
najmniej czytelnie, a najzgrabniej w C.

1

Zgrabniej niż najzgrabniej:

b;main(a){puts("Podaj a:");scanf("%i",&a);do b+=!(a&1);while(a/=10);printf("Ilosc cyfr parzystych w zapisie liczby: %i\n",b);}
 

Jednak myślę, że dla początkującego nieco czytelniejsza będzie moja pętla ;-P

1 użytkowników online, w tym zalogowanych: 0, gości: 1