c de rekürsif fonksiyonların stringlerle kullanılm

glck
18-01-2011, 19:57   |  #1  
OP Üye
Teşekkür Sayısı: 0
77 mesaj
Kayıt Tarihi:Kayıt: Oca 2009

mrb
bir stringdeki büyük harfleri bulan.Büyük harflerle yeni bir string oluşturan rekürsif fonksiyon.
verilen bir strindeki sayıları bulan ve bu sayılardan yeni bir string bulan rekürsif fonksiyon.programları cde nasıl kodlayabilirim.Teşekkürler.

Son Düzenleme: glck ~ 18 Ocak 2011 19:59
Kapalı Hesap (153535)
18-01-2011, 20:16   |  #2  
Kapalı Hesap
Teşekkür Sayısı: 27
2,297 mesaj
Kayıt Tarihi:Kayıt: Eki 2009

http://www.kadirga.k12.tr/egitim/c_programlama/ders.php-id=11.htm
Burda gerekli bilgiyi bulabilirsiniz.
Ayrıca:http://www1.gantep.edu.tr/~bingul/c/index.php?ders=12
 

coskunkolik
18-01-2011, 21:57   |  #3  
Yıllanmış Üye
Teşekkür Sayısı: 0
382 mesaj
Kayıt Tarihi:Kayıt: Eyl 2009

Çok orjinal bir soru. Her ne kadar bir halt anlamamış olsamda.

muh34
18-01-2011, 23:46   |  #4  
Yıllanmış Üye
Teşekkür Sayısı: 0
215 mesaj
Kayıt Tarihi:Kayıt: Eki 2010

Soruyu yanıtlamadan once C programlama dili icerisinde,bir karakterin buyuk harf formatına donusturen fonksiyonun toupper(),bir karakterin numerik bir deger icerdigini kontrol eden isdigit() fonksiyonlarının bilindigini anımsamalısınız.Soruda bir stringin icerisindeki buyuk harfleri ve ayrı bir soru niteligi tasıyan sayısal degerleri bulan programı rekursif bir yapıda yazılması istenmiş.O halde kurgulanacak algoritmada,stringin yani karakter dizisinin elemanları sırasıyla taranacaktır.Yukarıdaki iki fonksiyon bu konuda size yardımcı olabilir.Ayrıca sorunun rekursif olması gerektigi icin,dizinin taranması fonksiyon argumanlarına aktarılarak özyineli bir yapı kurgulanabilir.
Algoritmanın C dilindeki karşılığı aşagıdaki gibidir

#include <stdio.h>
#include <ctype.h>

void buyukHarfBul(char mesaj[],char mesaj2[],int i,int k) {

     if(i==7)
     return;
     if(toupper(mesaj)==mesaj)
     mesaj2[k++]=mesaj;
     buyukHarfBul(mesaj,mesaj2,i+1,k);
     }

void sayiBul(char mesaj[],char mesaj2[],int i,int k) {

     if(i==9)
     return;

     if(isdigit(mesaj)) 
     mesaj2[k++]=mesaj;
     sayiBul(mesaj,mesaj2,i+1,k);
     }

main() {

       char mesaj[8]={"MeRhAbA"};
       char mesaj2[5];
       char sayi[10]={"abc23f6j8"};
       buyukHarfBul(mesaj,mesaj2,0,0);
       puts(mesaj2);
       sayiBul(sayi,mesaj2,0,0);
       puts(mesaj2);
       getchar();
       return 0;
       }

Başarılar