Obliczanie ilosci cyfr parzystych/nieparzystych w liczbie

0

Witam
Zaczynam dopiero się uczyć C++, na zadanie mam - Obliczanie ilosci cyfr parzystych/nieparzystych w liczbie (np. w liczbie 123 jest 1 parzysta). Jak mogę to zrobić? Nie oczekuję gotowego kodu tylko pomocy jak się za to zabrać :)

1

Wczytał bym ją jako stringa, i potem sprawdzał czy "reszta z dzielenia" znaków przez 2 jest równa zero (jak tak to cyfra parzysta). Dla komputera wszystko jest liczbą, a tak się składa że parzyste cyfry mają też parzyste kody ASCII. Można by też wczytać jako liczbę i sprawdzać resztę z dzielenia przez 10, po sprawdzeniu czy parzysta ją odejmować i dzielić liczbę przez 10, ale wcześniejszy sposób wydaje mi się mniej problematyczny.

0

Z lekką pomocą kolegi zrobiłem to w następujący sposób (zamieszczam jeśli ktoś by kiedyś szukał)

//2. Obliczanie ilosci cyfr parzystych/nieparzystych w liczbie (np. w liczbie 123 mamy 1 parzysta)
#include <iostream>
using namespace std;
int parzyste(string);
int nieparzyste(string); 
string liczba;
int main()
{
    cout<<"Podaj liczbe: ";
    cin>>liczba;
    cout<<"Liczba zawiera "<<endl;
    cout<<"Cyfr parzystych: "<<parzyste(liczba)<<endl;
    cout<<"Cyfr nieparzystych: "<<nieparzyste(liczba)<<endl;
    system("pause");
}

int parzyste(string liczba)
{
	int dl=liczba.length();
    int wynik=0;
    for(int i=0; i<dl;i++)
    {
     if(liczba[i]%2==0)
     wynik++;       
    }
    return wynik;
}

int nieparzyste(string liczba)
{
	int dl=liczba.length();
    int wynik=0;
    for(int i=0; i<dl;i++)
    {
     if(liczba[i]%2==1)
     wynik++;       
    }
    return wynik;
}
 
0
  1. Zapoznaj się z pojęciem formatowania kodu: http://4programmers.net/Forum/998482
  2. Zapoznaj się z inkrementacją, bo jej nie rozumiesz: http://4programmers.net/Forum/1101404
  3. Nie używaj innego niż angielskie nazewnictwa: http://4programmers.net/Forum/1208091
  4. Nie używaj zmiennych globalnych - to się zemści wcześniej czy później.
  5. Sensowna implementacja:
#include <iostream>
using namespace std;

size_t oddcount(const string &s)
  {
   size_t count=0;
   for(char ch:s) count+=ch&1;
   return count;
  }

int main()
  {
   cout<<"Podaj liczbe: ";
   string value;
   cin>>value;
   size_t odd=oddcount(value);
   cout<<"Liczba zawiera"<<endl;
   cout<<"Cyfr parzystych: "<<value.size()-odd<<endl;
   cout<<"Cyfr nieparzystych: "<<odd<<endl;
   return 0;
  }

http://ideone.com/Dx5QHC

0

Dzięki wielkie ;) Ehh, będzie ciężej niż myślałem...

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