Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
6
Cevap
666
Tıklama
0
Öne Çıkarma
c ile ilgili soru yarın sınav var bakarsanız sevinirim
J
12 yıl
Onbaşı
Konu Sahibi

#include <stdio.h>
#include <stdlib.h>
int ebobu_bulur(sayi1,sayi2)
{
int ortak_bolen;
int bolen,buyuk_sayi;
if(sayi1<sayi2)
buyuk_sayi=sayi2;
else
buyuk_sayi=sayi1;
for(bolen=1;bolen<=buyuk_sayi/2;bolen++)
{
if(sayi1%bolen==0&&sayi2%bolen==0)
ortak_bolen=bolen;
}
printf("ebob: %d\n",ortak_bolen);
return ortak_bolen;
}
int main()
{
int sayi1,sayi2,ortak_bolen;
int ekok,ebob;
printf("sayiyi giriniz\n");
scanf("%d",&sayi1);
printf("ikinci sayiyi giriniz\n");
scanf("%d",&sayi2);
ebobu_bulur(sayi1,sayi2);
ebob=ortak_bolen;
ekok=(sayi1*sayi2)/ebob;
printf("%d\n",ekok);
}




arkadaşlar problem şu
ebobu bulan fonksiyon ebobu doğru buluyor ama return ortak_bolen ile ebobun değerini geri döndürmek istiyorum.kodu şöyle yazdığımda returnun bana verdiği değer yanlış oluyor.
mesela 40 ve 32 sayilari için denedim ebobu buluyor 8 diye ekrana yazdırıyor ama return ortak_bolen ile ebobu almaya çalışınca bana 2 değerini geri veriyor dolayısıyla ekoku yanlıs hesaplıyorum.yardımcı olabilirseniz sevinirim.

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



K
12 yıl
Çavuş

#include <stdio.h> 
#include <stdlib.h>
int ebobu_bulur(sayi1,sayi2)
{
int ortak_bolen;
int bolen,buyuk_sayi;
if(sayi1<sayi2)
buyuk_sayi=sayi2;
else
buyuk_sayi=sayi1;
for(bolen=1;bolen<=buyuk_sayi/2;bolen++)
{
if(sayi1%bolen==0&&sayi2%bolen==0)
ortak_bolen=bolen;
}

return ortak_bolen;
}



int main()
{
int sayi1,sayi2,ortak_bolen;
int ekok,ebob;
printf("sayiyi giriniz\n");
scanf("%d",&sayi1);
printf("ikinci sayiyi giriniz\n");
scanf("%d",&sayi2);
ebobu_bulur(sayi1,sayi2);

printf("%d\n",ebob=ebobu_bulur(sayi1,sayi2));
ekok=(sayi1*sayi2)/ebobu_bulur(sayi1,sayi2);
printf("%d\n",ekok);

return 0;
}


Bunu dene. fonksiyonda print kullanıcaksan void yapmalısın. Buda voidli örneği:
#include <stdio.h> 
#include <stdlib.h>
void ebobu_bulur(int sayi1,int sayi2)
{
int ortak_bolen,ekok;
int bolen,buyuk_sayi;
if(sayi1<sayi2)
buyuk_sayi=sayi2;
else
buyuk_sayi=sayi1;
for(bolen=1;bolen<=buyuk_sayi/2;bolen++)
{
if(sayi1%bolen==0 && sayi2%bolen==0)
ortak_bolen=bolen;
}
printf("%d\n",ortak_bolen);
ekok=(sayi1*sayi2)/ortak_bolen;
printf("%d\n",ekok);
}

int main()
{
int sayi1,sayi2,ortak_bolen;
int ekok,ebob;
printf("sayiyi giriniz\n");
scanf("%d",&sayi1);
printf("ikinci sayiyi giriniz\n");
scanf("%d",&sayi2);
ebobu_bulur(sayi1,sayi2);

return 0;
}





< Bu mesaj bu kişi tarafından değiştirildi Khwarizm -- 25 Kasım 2013; 2:11:22 >
Bu mesaja 1 cevap geldi.
J
12 yıl
Onbaşı
Konu Sahibi

hocam senin çözümü anladım eyvallah.Benim sormak istediğim başka bir şey daha var ben fonksiyonlarla değişken geri dönüşümü yapabilirmiyim.mesela fonksiyonum return sayi1 yapiyor ben bu fonkiyonu main içerisinde çağırıp sayi1 değişkenini kullanabilirmiyim?


Bu mesaja 2 cevap geldi.

Bu mesajda bahsedilenler: @Ebossyy
K
12 yıl
Çavuş

Benim bildiğim öyle yapamazsın. eğer sayı1 değişkenini kullanmak istiyorsan main içerisinde fonksiyon ismiyle çağırmalısın. Örnek:
#include <stdio.h> 
#include <stdlib.h>

int normal(n)
{
int i=2,a;
n=i+1;
return (n);
}

int main()
{
int n,a;
scanf("%d",&n);
n=normal(n);
printf("%d",n);

return 0;
}


Veya senın yazdıgın kodu bıraz degıstırerek :
#include <stdio.h> 
#include <stdlib.h>
int ebobu_bulur(sayi1,sayi2)
{
int ortak_bolen;
int bolen,buyuk_sayi;
if(sayi1<sayi2)
buyuk_sayi=sayi2;
else
buyuk_sayi=sayi1;
for(bolen=1;bolen<=buyuk_sayi/2;bolen++)
{
if(sayi1%bolen==0&&sayi2%bolen==0)
ortak_bolen=bolen;
}

return ortak_bolen;
}
int main()
{
int sayi1,sayi2;
int ekok,ebob;
printf("sayiyi giriniz\n");
scanf("%d",&sayi1);
printf("ikinci sayiyi giriniz\n");
scanf("%d",&sayi2);
ebobu_bulur(sayi1,sayi2);
ebob=ebobu_bulur(sayi1,sayi2);
printf("%d\n",ebob);
ekok=(sayi1*sayi2)/ebobu_bulur(sayi1,sayi2);
printf("%d\n",ekok);

return 0;
}





< Bu mesaj bu kişi tarafından değiştirildi Khwarizm -- 26 Kasım 2013; 1:39:23 >
Bu mesaja 1 cevap geldi.
J
12 yıl
Onbaşı
Konu Sahibi

çok sağol anladım meseleyi




Bu mesajda bahsedilenler: @Ebossyy
4
12 yıl
Teğmen

2 şekilde yapabilirsin. sayi1 i global ve ya static yerel olarak tanımlayıp, adresini geri döndürürsün.. Diğer seçenek fonksiyonun içinde sayi1 i dinamik bellek ile elde edip, adresini döndürürsün. Burdan anlaşılcak sonuç C de call by reference, adreslerle yapılır. Diğer yapılanlar nesnenin içeriğinin kopyasından ibarettir.(call by value)


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @just_ks
G
12 yıl
Onbaşı

Bu şekilde düzelttim kodlarını hatalı yaptığın yerlerin başında // koydum altında doğrusu yazıyor.

 
#include <stdio.h>
#include <stdlib.h>
//int ebobu_bulur(sayi1,sayi2)
int ebobu_bulur(int sayi1,int sayi2)
{
int ortak_bolen;
int bolen,buyuk_sayi;

if(sayi1<sayi2)
buyuk_sayi=sayi2;
else
buyuk_sayi=sayi1;
for(bolen=1;bolen<=buyuk_sayi/2;bolen++) {

if(sayi1%bolen==0&&sayi2%bolen==0)
ortak_bolen=bolen;
}
//printf("ebob: %d\n",ortak_bolen);
return ortak_bolen;
}
int main()
{
int sayi1,sayi2,ortak_bolen;
int ekok,ebob;

printf("sayiyi giriniz\n");
scanf("%d",&sayi1);

printf("ikinci sayiyi giriniz\n");
scanf("%d",&sayi2);

//ebobu_bulur(sayi1,sayi2);
//ebob=ortak_bolen;
ebob=ebobu_bulur(sayi1,sayi2);
ekok=(sayi1*sayi2)/ebob;
printf("ekok: %d ebob: %d\n",ekok, ebob);
}



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.