Arama butonu
Bu konudaki kullanıcılar: 1 misafir
4
Cevap
245
Tıklama
0
Öne Çıkarma
C++
A
20 yıl
Yüzbaşı
Konu Sahibi

Arkadaşlar bu tanımlamayla ne anlatılmak istenmiş,bi türlü kavrayamadım,yardımcı olursanız sewinirim.

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 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.

Üye Ol Şimdi Değil



A
20 yıl
Yüzbaşı
Konu Sahibi

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;
}

yani bu kodlamadaki mantığı siz de mi anlamadınız:((( yardım lütfen


Bu mesaja 2 cevap geldi.
M
20 yıl
Teğmen

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.



D
20 yıl
Yarbay

/* Ö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.

/* Kolay gelsin :) */


Bu mesaja 1 cevap geldi.
A
20 yıl
Yüzbaşı
Konu Sahibi

teşekkürler arkadaşlar,gerçekten çok faydalı oldu benimiçin mantığı kawramam açısından



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.