Tuesday, January 12, 2016

(ENG/TR) Algorithm to find digits of number (Sayının numaralarını bulmak için algoritma)

ENGLISH

How to find digits of N-digit number. It means we don't know how many digits does number have.

Ex.
N = 6
Number = 153756

ANSWER

First way:

Actually, first of all, we have to think that how we find number of digits of number in real life?
-When we read the number, actually we simplify this number. For example: 1324. How we read it? 
-One thousand three hundred twenty four.
-Actually we split number into digits. Then, second question: How we split it in programming world?
-Dividing by 10! Yes, every time we divide this number, we lose last digit. And when we finally lost last digit(which is 1 for 1324) we will have 0.
-So if we copy this number to another variable(so that we won't lose it while dividing), then count how many times we divide this number to get zero; we can find the number of digits.
-Now we have number of digits N! What we do is get the modulus 10 of number (to find last digit because when we divide number with 10 and look remainder, we see last digit of number) and save it to array, then divide ten, N times.

Second way(more efficient):

You can find digits of number while dividing 10. Up to get zero, take last digit and divide number with 10. It is more simple and complicated way.

TÜRKÇE

Birinci yol:

Aslında burada sizden istenen, girilen bir sayının kaç basamaklı olduğunu bulmanızdır. Örnek verelim: 10562. Bu sayının 5 basamaklı olduğunu anlamak için aslına bakarsanız basamaklarına ayırıyoruz. "on bin beş yüz altmış iki" diye okuyunca 5 basamaklı olduğunu anlıyoruz. O zaman bu sayıyı programlama dilinde de basamaklarına ayırmalıyız. Aslında bu işlemin nasıl yapıldığını biliyorsunuz: Sürekli 10'a bölerek. Ta ki 0 kalana kadar. O zaman yapmamız gereken bir "counter" la bu işlemi kaç kere yaptığımızı saymak.
Tabii ki bölmeden önce sayımızı farklı bir variable'a atayalım ki o sayımızı kaybetmeyelim.
Daha sonra sayımızın son rakamını bulup, bunu bir array'e atayıp ardından tekrar 10 a bölüp tekrar son rakamı bulabiliriz. Son rakamı bulmak için 10'a bölüp kalana bakarız. Bu da mod 10 demektir. Yani ilk önce mod 10'unu alıp sonra 10'a böleriz. Bu işlemi de basamak sayısı kadar tekrarlarız.

İkinci yol(daha etkili):

Daha etkili bir yol olarak 0 elde edene kadar 10'a bölüp her böldüğünüzde son basamağı bulabilirsiniz. Bu daha etkili ve daha basit bir yöntem olur.

No comments:

Post a Comment