Algorytm - przeszkuwiwanie danej liczby


(Krzysiekaczor) #1

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 :wink:). 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


(andhla) #2

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.


(Krzysiekaczor) #3

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


(Fiołek) #4

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


(Krzysiekaczor) #5

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


(Fiołek) #6

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

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


(Krzysiekaczor) #7

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


(Awes) #8

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.


(andhla) #9

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.


(Krzysiekaczor) #10

Dzięki! Problem rozwiązany.