Chewy Mesaj tarihi: Aralık 2, 2009 Mesaj tarihi: Aralık 2, 2009 Şöyle bir şey yaptım hatam nerde? Neden calısmıyor? #include<stdio.h> int multiple(int num1,int num2) { while(num2%num1==0) { printf("Second number is a multiple of the first"); } printf("Second number is not a multiple of the first"); return(multiple); } int main(void) { int num1,num2,disp; printf("Enter two integer: "); scanf("%d %d",&num1,&num2); disp=multiple(disp); printf("%d",disp); return 0; }
Cd- Mesaj tarihi: Aralık 2, 2009 Mesaj tarihi: Aralık 2, 2009 fonksiyonu tek değişkenle çağırmışsın, iki değişkenle tanımlamışsın
Chewy Mesaj tarihi: Aralık 2, 2009 Konuyu açan Mesaj tarihi: Aralık 2, 2009 anlayamadım ama nereyi düzeltcem.
Fly Mesaj tarihi: Aralık 2, 2009 Mesaj tarihi: Aralık 2, 2009 multiple(a,b) demişsin sadece a ile çağırmışsın, b yi de koy
aquila Mesaj tarihi: Aralık 2, 2009 Mesaj tarihi: Aralık 2, 2009 burda fonksiyonu tanimlarken iki tane variable alir demissin. int multiple(int num1,int num2) sonra burda fonksiyonu cagirirken sadece bi tane gondermissin multiple(disp)
Chewy Mesaj tarihi: Aralık 2, 2009 Konuyu açan Mesaj tarihi: Aralık 2, 2009 printf("Second number is not a multiple of the first"); return(multiple); burasımı sorun? abi call ederken return(fonksiyon ismi) bu sekilde diil mi?
Chewy Mesaj tarihi: Aralık 2, 2009 Konuyu açan Mesaj tarihi: Aralık 2, 2009 ama outputta tek sadece printf göstercek.Yani num1 ve num2 ye bakıp tek bi sey göstercek?
Chewy Mesaj tarihi: Aralık 2, 2009 Konuyu açan Mesaj tarihi: Aralık 2, 2009 aquila said: burda fonksiyonu tanimlarken iki tane variable alir demissin. int multiple(int num1,int num2) sonra burda fonksiyonu cagirirken sadece bi tane gondermissin multiple(disp) int multiple(disp)//buraya tek bisey dedim int num1, num2; yapsam?
chagy Mesaj tarihi: Aralık 2, 2009 Mesaj tarihi: Aralık 2, 2009 return(multiple) ile fonksiyonun kendini returnlemeye çalışıyorsun, num1,num2 olarak main içinde belirlediğin değişkenlere atama yapmana rağmen, fonksiyon içine göndermiyorsun, disp = multiple(disp) yapmışsın ki ikinci disp yerine num1,num2 gelicek.
aquila Mesaj tarihi: Aralık 2, 2009 Mesaj tarihi: Aralık 2, 2009 yalniz foknsiyonun hicbir amaci yok, direk mainde yaparsin orda yaptigini, kod sadece bu kadarsa.
chagy Mesaj tarihi: Aralık 2, 2009 Mesaj tarihi: Aralık 2, 2009 Chewy said: ama outputta tek sadece printf göstercek.Yani num1 ve num2 ye bakıp tek bi sey göstercek? fonksiyonunu returnsuz yap. int yerine void kullanan, yine parametreler int alsın, fonksiyon içinde printfleri yaz. main içinde sadece num1 ve num2 yi atayacak printf ve scanf i hazırla sonra multiple(num1,num2) ile yoluna devam et. deneme yapamıyorum şu an ama kabaca böyle.
Chewy Mesaj tarihi: Aralık 2, 2009 Konuyu açan Mesaj tarihi: Aralık 2, 2009 abi hesaplama yapmıyoruz ben nie void kullanmıyorum ki ne malım ya :) @aquilla Fonksiyonları işliyoruzda o yüzden
chagy Mesaj tarihi: Aralık 2, 2009 Mesaj tarihi: Aralık 2, 2009 while(num2%num1==0) { printf("Second number is a multiple of the first" ; } printf("Second number is not a multiple of the first" ; yalnız bu kısımda, while koşulu sağlansada sağlanmasa da iki printf de gözükür kanımca, onun yerine if - else kullanılsa daha bir mantıklı gibi.
aquila Mesaj tarihi: Aralık 2, 2009 Mesaj tarihi: Aralık 2, 2009 o whiledaki durum karsilandigi zaman iki printfde gozukur.
chagy Mesaj tarihi: Aralık 2, 2009 Mesaj tarihi: Aralık 2, 2009 illa while ile yapacaksan , o zaman fonskiyon içinde bir değişken belirle , num2%num1 sağlıyorsa true sağlamıyorsa false olsun, while dışında if-else kullanarak printfleri yaz. hoş loop kullanmak başlıca saçma burada ama.
Chewy Mesaj tarihi: Aralık 2, 2009 Konuyu açan Mesaj tarihi: Aralık 2, 2009 e peki loop u olumsuzda nasıl bitircem ben o zaman? forlamı yapıyım?
chagy Mesaj tarihi: Aralık 2, 2009 Mesaj tarihi: Aralık 2, 2009 void yerine fonksiyonu string döndürüp, hem while içinde hem while dışında iki printf yerine return koyarsan, main'de printf ile fonksiyonu çağırırsan olur zannediyorum.
Kojiroh Mesaj tarihi: Aralık 2, 2009 Mesaj tarihi: Aralık 2, 2009 multiple(2,6) diye çağırdın mı uçar program yalnız. while yerine if demen lazım orda. Hocanın loop'tan kastı, sonucu çıkarma yaparak bulması. 2x5 = 5 + 5 olayı. Tam katıysa, çıkarmaların sonucunda 0 çıkması gerek. void multiple(int num1, int num2) { int test = num2; while (test > 0) test -= num1; if(test == 0) printf("Second number is a multiple of the first"); else printf("Second number is not a multiple of the first"); }
Arlooax Mesaj tarihi: Aralık 2, 2009 Mesaj tarihi: Aralık 2, 2009 //------------------------------- // Returns 0 if num2 divides num1 //-------------------------------- int multiple(int num1, int num2){ return num1%num2; }
Chewy Mesaj tarihi: Aralık 3, 2009 Konuyu açan Mesaj tarihi: Aralık 3, 2009 guys bir de şuna baksanız :S #include<stdio.h> int topla(int num1,int num2,int num3,int num4) { int sum=0; double avg=0.0; sum=num1+num2+num3+num4; avg=sum/4; return(sum,avg); } int main(void) { int num1,num2,num3,num4,disp; printf("Enter the numbers: "); scanf("%d %d %d %d",&num1,&num2,&num3,&num4); disp=topla(sum,avg); printf("The numbers are %d %d %d %d || sum and average are %d %f",num1,num2,num3,num4,disp); return 0; } sum ve avg tanımlanmadı diyor neden?Fonksiyonda tanımladım onları ben.
Chewy Mesaj tarihi: Aralık 3, 2009 Konuyu açan Mesaj tarihi: Aralık 3, 2009 return(sum); return(avg); } şöyle denedim olmadı.Fonksiyonda tek tek call ettirdim aşada şey sum'ı tanımladım sum=topla(sum); avg=topla(avg); dedim olmadı gene.Tek tek ayırarak call ettirsem onları olmaz mı?
Larva Mesaj tarihi: Aralık 3, 2009 Mesaj tarihi: Aralık 3, 2009 Gene üstteki hatandan yapmışsın bi fonksiyonu int topla(int num1,int num2,int num3,int num4) diye tanımlıyorsan o fonksiyonu çağırırken disp=topla(num1,num2,num3,num4); yani main de parametrelerin neyse onları yollıcaksın. Şöyle düşün fonksiyon kendi halinda kapalı bi kutu parametre olarak mainden aldıkları num1 num2 falan buna giriyo kendi içinde bişeyler yapıp sana bi çıktı veriyor. Sen fonksiyona dışardan fonksiyon içinde tanımladığın bişeyler yollamışın. Mainde tanımladığın num1 num2 yi yollaman gerek. Ayrıca return kısmı da return(sum,avg) şekilde çalışmaz fonksiyonu int topla olarak tanımladığın için tek bir int değeri geri dönebilirsin sadece return avg; mesela birden çok değer dönmek istiyosan pointerları görmeniz gerek önce.
Chewy Mesaj tarihi: Aralık 3, 2009 Konuyu açan Mesaj tarihi: Aralık 3, 2009 yani doğrusu şu olması gerekmiyor mu? #include int topla(int sum,int avg) { int num1,num2,num3,num4; sum=num1+num2+num3+num4; avg=sum/4; return(sum,avg); } yada şöyle, int main(void) { int num1,num2,num3,num4,sum,avg; printf("Enter the numbers:)"; scanf("%d %d %d %d",&num1,&num2,&num3,&num4); sum=topla(sum); avg=topla(avg); printf("Sum and avg are %d %d",sum,avg); return 0; }
Öne çıkan mesajlar