if (p>q) {i=p;p=q;q=i;} eğer p, q'dan büyük ise p'yi q, q'yu da p yapıyor. i=q/p; //az once q'yu hep buyuk olacak sekilde ayarlamıstı simdi de i'yi q/p'ye eşitliyor. do{k=p*i; i=i+1; }while ( k%q!=0); k sayısının q'ya bölümü 0 değilken. q/p olan i'yi bir p ile çarpıyor ve bunu k ya eşitliyor. k'nın q'ya bölümü sıfır olana kadar devam ediyor. sonra da fonksiyon değeri k'ya dönüyor.
şimdi bir örnek yaparsak
diyelim p=16 q=24 if bakacak p,q'dan büyük mü diye burada değil. o yüzden if kısmını es geçecek. i=24/16= 1 sonucu i(integer olduğu için 1 olacak). şimdi do ya devam. k=16*1 i=i+1(burada i'yi bir arttırıyor) while (k%q!=0) (şimdi 16%24 sıfıra eşit değil while koşulu sağlandı,gene do'ya geri döner.) k=16*2(i'yi bir arttırmıştı.) (32%24 gene eşitlik sağlanmadı) do'ya geri döner. k=16*3(48%24) evet 48'in 24'e bölümünden kalan sıfır. while koşulu sağlanamadı. do döngüsü kırıldı. return k( fonksiyonun değerini 48 olarak ayarlar)
boylece int(16,24)=48 olur ki 16 ve 24'nin en küçük ortak katı 48'dir.
/* Öncelikle şunu söyliyeyim ben bu işte çok acemiyim. Anladığım kadarıyla açıklayayım. İki sayının okek'ini (ortak katların en küçüğü) bulan fonksiyon tanımlanmış */
int okek(int, int);
/* Burada okek fonksiyonuna girilen iki değişkenin de tam sayı olduğu beliritliyor */
int okek(int p, int q)
{ long i, k; // i ve k değişkenleri tanımlanmış.
/* Burada p değişkeni q dan büyükse i değişkeni yardımıyla p ile q nun değerleri birbiriyle değiştiriliyor. Niye? p>q ve q>p gibi durum söz konusudur. Böyle yapmazsa iki durum için ayrı kod yazmak */
if (p>q) { i=p; p=q; q=i; }
/* Şimdi burası çok önemli. Buradaki mantık şu: İki sayının okek'i, küçük olan sayının katlarından biridir. Eğer küçük sayının katı büyük sayının sayının da bir katı ise okek'i tesbit ediyor */
i=q/p; // Burada q, p'nin kaç katı olduğu tesbit ediliyor
do{ k=p*i; // Buradaki k öne sürülen koşulu gerçeklerse okek olacak i=i+1; // Öne sürülen koşul gerçeklenmez ise bir dahaki sefere bir fazlasıyla çarpılacak }while ( k%q!=0); // Küçük sayının katı büyük sayının da tam katı mı diye bakılıyor return k; // fonksiyon cevap olarak k yı (okek'i) verir.
int okek(int, int);
int okek(int p, int q)
{
long i, k;
if (p>q) {
i=p;
p=q;
q=i;
}
i=q/p;
do{
k=p*i;
i=i+1;
}while ( k%q!=0);
return k;
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.