< Bu mesaj bu kişi tarafından değiştirildi omrumbakitemiz -- 23 Aralık 2014; 21:07:32 > |
C Programlama Recursive Fonksiyon EBOB Sorusu
-
-
hocam şöyle ekleme yaptım
#include <stdio.h>
#include <conio.h>
int kalan(int x,int y);
int ebob(int x, int y);
int main(){
int sayi1,sayi2,sonuc;
printf("sayi girin: "); scanf("%d",&sayi1);
printf("sayi girin: "); scanf("%d",&sayi2);
sonuc=ebob(sayi1,sayi2);
printf("%d\n",sonuc);
}
int kalan(int x,int y){
int kalan_sonuc;
if(x>y)
{
kalan_sonuc=x % y;
}
else if (x<y)
{
kalan_sonuc=y%x;
}
else return 0;
return kalan_sonuc;
}
int ebob(int x, int y)
{
if(x>y)
{
if(y>0)
{
return ebob(y,kalan(x,y));
}
}
else if (x<y)
{
if(x>0)
{
return ebob(x,kalan(x,y));
}
}
if ((x==0) || (y==0))
{
if (x>y)
{
return x;
}
if (y>x)
{
return y;
}
}
}
< Bu mesaj bu kişi tarafından değiştirildi tnszfr -- 25 Aralık 2014; 0:22:05 >
-
Yukarıdaki formülde hata var. 1. örnek;
ebob(3, 6) -> ebob(6, 3) -> ebob(3, 0) -> 0
ebob(8, 4) -> ebob(4, 0) -> 0
Olması gereken şu;
ebob(x, y) = {x if y = 0, ebob(y, kalan(x, y)) if y > 0}
ebob fonksiyonu;
int ebob(int x, int y)
{
if(y == 0)
{
return x;
}
else if(y > 0)
{
return ebob(y, x % y);
}
}
Kaynak;
http://en.wikipedia.org/wiki/Greatest_common_divisor
Euclid's algorithm kısmı.
< Bu mesaj bu kişi tarafından değiştirildi welrocken -- 24 Aralık 2014; 20:07:54 > -
‘K’ (büyük k) harfini rekürsif kodu yazmam gerekiyor yapamadım yardımcı olur musunuz?
-
Bölüm nedir, 4 yıllık Bilg Müh ?
-
Evet hocam
-
Evet hocam
-
Gün içerisinde ve C dilinde yazmam gerekiyor hocam yardımcı olursanız çok teşekkür ederim.
-
4 yıllık Bilg Müh bölümünde problem çözmek için Lisp öğretilmeli bence cunku Lisp problem çözme alanında en iyi dillerden biri. altta 5 dk'da çözdüm ki bunun 4'ü formatta space atmak nasıl olur ona bakarken harcadım.
(defun k-yaz (&optional (boyut 8) (joker boyut) (orta (round (/ boyut 2)) ) ) (if (< joker 1) "sonlandı" (if (> joker orta) (progn (format t "*~v,:a* ~%" (- joker orta -1) #\space) (k-yaz boyut (1- joker) orta ) ) (progn (format t "*~v,:a* ~%" (- orta joker -1) #\space) (k-yaz boyut (1- joker) orta ) ) ) ) )Kod
Yığını:Çözümü Lisp ile kodladıktan sonra onu C'ye cevirmek kolay.
#include<stdio.h> #include <stdlib.h> /* atoi */ #include <math.h> void k_yaz(int boyut, int joker, int orta) { if (joker < 1) { return; } else { if (joker > orta) { printf("*%*s%s\n", joker-orta+1 , "", "*"); k_yaz(boyut, joker-1, orta); } else { printf("*%*s%s\n", orta-joker+1 , "", "*"); k_yaz(boyut, joker-1, orta); } } } int main (int argc, char** argv) { int boyut = atoi(argv[1]); int joker = boyut; int orta = round (boyut/2); k_yaz( boyut, joker, orta); return 0; }Kod
Yığını:C'deki round işlevi 0.5'i 1'e yuvarladığ için K harfinin bireşim noktası bir satır altta cıkıyor. Lisp'teki round 0.5 'i 0'a yuvarladığı için tam yerinde cıkıyor. Ve tabi ki C'de K 'nın boyutunu komut satırı argümanı olarak giriyorsun.
-
böyle bi hata veriyor
-
Sonraki mesajı neden kaldırdın? Evet c++ compiler ile derlediğin için o hatayı veriyor olmalı. C Compiler kullanmalısın. Visual Studio 'da da C Compiler var diye hatırlıyorum. Hiçbirisi yoksa GNU C Compiler kullan, hatasız derlenir:
< Bu ileti mini sürüm kullanılarak atıldı > -
Cevap vermeyeceksiniz sandım kendim çözmeye çalışıyordum hocam, söylediğiniz gibi yaptım çalıştı.
Allah razı hocam, çok teşekkür ederim hakkınızı helal edin
-
Merhaba hocam rahatsız ediyorum kusura bakmayın sizden bir ricada bulunabilir miyim?
Alfabesi E={a,b,c,d,e,f,g,h,0,1,2,3,4,5,6,7,8,9,+,-,*,} olan küme yardımıyla 8 karakterli 10 adet şifre üreten metodu veriniz. Ancak oluşturulacak şifreler; {+,-,*} olan elemanlardan bir adet içerecektir ve iki adet rakam içermektedir. Ayrıca şifreleme sisteminin kuralı şu şekildedir: şifre öncelikle harf ile başlayacak, simgeyle devam edip rakamla bitmelidir. Bu programda 10 adet şifre üretilecektir. Program bir defa çalışacak ve 10 adet şifre satır satır hem ekrana hem de yeni bir ‘sifre.txt’ dosyasına yazdırılacaktır.( c dilinde)
şu kodu yazmam gerekiyor da eğer müsaitseniz yardımcı olur musunuz lütfen sürem kısıtlı yardımcı olursanız çok mutlu olurum,teşekkür ederim.
-
Daha önce de bahsetmiştim, bu tür problemler için c uygun değil. lisp ile 5 dk'da yazdım ve çalışıyor. c ile yazsam compile debug vs yarım saatte bitmezdi, yarım saati cok iyimser söyledim. hodja'larınıza söyleyin, problem çözmek için c dışında başka dil kullansınlar diyeceğim fakat müfredatı onlar belirlemiyor o yüzden diyemiyorum.
< Bu ileti mini sürüm kullanılarak atıldı > -
< Bu mesaj bu kişi tarafından değiştirildi Gökşen PASLI -- 31 Mayıs 2021; 21:53:46 > -
merhaba c# ta hesap makinesi yapmaya çalışıyorumda takıldığım bi yer var yardımcı olabilirmisniz?
-
hocam 1 e bastığım zaman label 1 e yazdırıyorum ama label 2 ye işlem sembolü koyup 2. sayıyı label 3 ye nasıl yazacağımı bulamadım
-
sayıların tıklama olayına
eğer label1 ve label2 doluysa label3 texti=buttonun değeri değilse
label1 in texti =buttonun değeri
gibi
-
hocam label1 ve label2 nin dolu olup olmadığını nasıl kontrol edeceğim anlayamadım mümkünse kod şeklinde atabilir misiniz?
if (label1_201104020.Text == "0")
{
label1_201104020.Text = "1";
}
else
{
label1_201104020.Text += "1";
}
if (label2_201104020.Text == "+")
{
label3_201104020.Text += "1";
}
1 in içine bu kodu yazdım label 1 e 1 yazıyor , + ya basıyorum sonra tekrar 1 e bastığımda hem label1 hemde label2 ye 1 yazıyor.
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X