Algorytm - przeszkuwiwanie danej liczby

Witam!

Mam zrobiony algorytm w Eli 2.0 (taki program do układania algorytmów z klocków :mrgreen: ) który “rozbija” cyfrę i porównuje ją z cyfrą. Opiera się on na takiej zasadzie - najpierw liczba jest dzielona przez 10. Reszta z dzielenia to są jedności, wynik dzielenia “normalnego” jest zapisywany do zmiennej i znów ale nie na liczbie tylko na tej zmiennej jest wykonywane dzielenie przez liczbę i warunek sprawdza czy dzielenie nie jest 0( koniec algorytmu) czy jest inaczej. Jeżeli jest inaczej to wtedy reszta z dzielenia jest sprawdzana z cyfrą podaną przez użytkownika i zmienna “znal” jest inkrementowana (czy coś podobnego ;)). I algorytm gubi 1 cyfrę jakby np. przy liczbie 22 i cyfrze 2 wyświetla znaleziono 1 :expressionless: Co jest źle a może w ogóle macie inny sposób na ten “problem” :wink:

Z góry dzięki.

Pozdrowienia Alien6

O ile dobrze zrozumiałem to zadanie polega na wyznaczeniu ile razy dana cyfra występuje w zapisie dziesiętnym danej liczby, czyli dla liczby 3123443213 i cyfry 3 prawidłowy wynik to 4. Wydaje mi się że najprościej potraktować liczbę i cyfrę jako tekst i przeszukać tekst “zawierający” liczbę znak po znaku zliczając ile razy dana cyfra wystąpi.

Dobrze zrozumiałeś ale jak to zapisać w algorytmie ??

Że co? Jak chcesz zapisać algorytm w algorytmie?

Ta zmiana liczby na str. i w ogóle jak zapisać to w postaci algorytmu???

Ponawiam pytanie, jak chcesz zapisać algorytm w postaci algorytmu?

Chcesz zapisać go w jakimś konkretnym języku?

Tak w pascalu. W programie Eli takie cuda da się zrobić :wink:

Ja zrobilbym to tak (wersja poglądowa w C, bo nie używam pascala), bez konwersji na string:

int liczba = 2434423;

int szukaj = 3;

int ilosc = 0;

while (liczba > 0) {

	if (liczba % 10 == szukaj) {

		ilosc++;

	}

	liczba /= 10;

}

Jezeli nie znasz C, to % oznacza reszte z dzielenia.

Przecież i liczbę i cyfrę można od razu wczytać jako tekst i tym sposobem nie jesteśmy ograniczeni liczb 16, 32 czy 64 bitowych. O ile dobrze zrozumiałem zadanie to program ten oprócz zliczenia ilości wystąpień cyfry nic innego nie robi zatem nie musi przechowywać danej liczby w zmiennej typu liczbowego.

Dzięki! Problem rozwiązany.