Konuyu görüntüle
IUCODERS FORUM > Programlama > C / C++ > stringi tersten yazd?rma
Yazar
bilgeadam61


avatar
trabzon
Kayıt: 31.01.2006
13.03.2007-18:02 #18127

#include<stdio.h>
void ters(const char *const );

int main(){

char cumle [80];
const char* sptr=&cumle[0];


printf("metin girisi
");
gets(cumle);

printf("ters cumle
");

ters(cumle);
getchar();

}

void ters(const char * const sptr){
if(sptr[0]=='')
return;
else {
ters(&sptr[1]);
putchar(sptr[0]);
}
}


arkadaşlar bu kod girilen stirngi tersten yazdırıoo ama neden pek anlamadım recursive yapı var detaylı anlatabilecek arkadaşlara ihityac vardır bilineee....





geldim gördüm yendim...
Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
13.03.2007-18:07 #18129
İşini yapsa bile ben bu kodu beğenmedim. Nerden buldun ki bunu? Ona göre yorum yapacam.





Let`s make this world a better place to live !

Yazar
nazmi


avatar

Kayıt: 11.03.2007
13.03.2007-18:15 #18130
if(sptr[0]=='')

kod burda hata verio.

ayrica recursiflik for dongusuyle yapabilecegin stringin dolasimi icin (ilk bakista bole gordum).ama dedim gibi hata verio.





Ezikligi hiçbir tarz örtemez...





Yazar
bilgeadam61


avatar
trabzon
Kayıt: 31.01.2006
13.03.2007-18:17 #18131
nasi hata verioo ki ben çaliştirdim ayrıca kodd deitelin örnek kodu...





geldim gördüm yendim...
Yazar
nazmi


avatar

Kayıt: 11.03.2007
13.03.2007-18:20 #18132
kodun dogrusu


if(sptr[0]== ' NULL karekter ')

ok sorunu cozduk .NULL karakter iucoders ta baska simgeye denk geliobiggrinbiggrin





Ezikligi hiçbir tarz örtemez...





Yazar
bilgeadam61


avatar
trabzon
Kayıt: 31.01.2006
13.03.2007-18:21 #18133


#include<stdio.h>
void ters(const char *const );

int main(){

char cumle [80];
const char* sptr=&cumle[0];


printf("metin girisi
");
gets(cumle);

printf("ters cumle
");

ters(cumle);
getchar();

}

void ters(const char * const sptr){
if(sptr[0]=='')
return;
else {
ters(&sptr[1]);
putchar(sptr[0]);
}
}


tekrar bi baksanıza koda..kod çalişıoo ama rekürsifi cözemedimm ben...





geldim gördüm yendim...
Yazar
bilgeadam61


avatar
trabzon
Kayıt: 31.01.2006
13.03.2007-18:23 #18134
kod nasıl çalışıooo pekiii





geldim gördüm yendim...
Yazar
nazmi


avatar

Kayıt: 11.03.2007
13.03.2007-18:25 #18136
kod stringin sonuna kadar gidiyor.
son karakter Null oldugunda, ilk donusu bos donuyor return ifadesi ile
daha sonra da karakterleri yaza yaza basa kadar donuyor.

gercekten zekice ve recursiflik budur dedirten kod ama bu is icin abartilibiggrin





Ezikligi hiçbir tarz örtemez...





Yazar
bilgeadam61


avatar
trabzon
Kayıt: 31.01.2006
13.03.2007-18:34 #18137
şimdi sptr[0]=='' kontrolu yapıo sora else kısmına gecio
ters(&sptr[1]) çaliştırıo //eger girdigimiz deger ,, mehmet olsa
putchar(sptr[0]) çaliştirilip ilk karakter olarak m yi yazdırmazı gerekmez mi??





geldim gördüm yendim...
Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
13.03.2007-18:39 #18138
Tamam algoritmayı çözdüm şimdi. Fonksiyon input olarak sabit bir dizinin bir elemanını alıyor. O eleman NULL ise dışa dönüyor. Değilse içe giriyor. Her dışa çıkışta bir eleman yazdırıyor. Yani katarın sonuna gidene kadar içe giriyor ve yazdıra yazdıra dışarı çıkıyor.
Bilmem anlatabildim mi. thinking





Let`s make this world a better place to live !

Yazar
nazmi


avatar

Kayıt: 11.03.2007
13.03.2007-18:42 #18139
putchar(sptr[0]) çaliştirilip ilk karakter olarak m yi yazdırmazı gerekmez mi??

tam püf nokta da burda.

sptr[0]artık son karakter zaten m yi degil t yi tutar.(mehmet )

soyle dusunebiliriz her recursive cagrida sptr adresi 1 saga kayiyor.






Ezikligi hiçbir tarz örtemez...





Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
13.03.2007-18:45 #18140
nazmi yazdi
 

putchar(sptr[0]) çaliştirilip ilk karakter olarak m yi yazdırmazı gerekmez mi??

tam püf nokta da burda.

sptr[0]artık son karakter zaten m yi degil t yi tutar.(mehmet )


Zaten sptr derken ortada bir işaretçi kavramının gezindiği belli edilmeye çalışılmış.





Let`s make this world a better place to live !

Yazar
bilgeadam61


avatar
trabzon
Kayıt: 31.01.2006
13.03.2007-18:47 #18141
katarın sonuna kadar gelene kadae hiçbişe yazdırmamasının nedeni ne peki ... bana kalsa bişeler yazdırması lazım katarın sonun gelene kadar ama öle deil işte işte ben onun nedenini anlayadım burda rekarsife özgü bi olay var ama neee!!!





geldim gördüm yendim...
Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
13.03.2007-18:49 #18142
bilgeadam61 yazdi
 
katarın sonuna kadar gelene kadae hiçbişe yazdırmamasının nedeni ne peki ... bana kalsa bişeler yazdırması lazım katarın sonun gelene kadar ama öle deil işte işte ben onun nedenini anlayadım burda rekarsife özgü bi olay var ama neee!!!

Amaç sondan başa doğru yazdırmak değil mi zaten? :)





Let`s make this world a better place to live !

Yazar
nazmi


avatar

Kayıt: 11.03.2007
13.03.2007-18:52 #18143
bilgeadam61 yazdi
 
katarın sonuna kadar gelene kadae hiçbişe yazdırmamasının nedeni ne peki ... bana kalsa bişeler yazdırması lazım katarın sonun gelene kadar ama öle deil işte işte ben onun nedenini anlayadım burda rekarsife özgü bi olay var ama neee!!!


sona gelene kadar yazdirmiyor cunku dikkat edersen putchar a gelmeden fonksiyon kendini bir daha cagiriyor





Ezikligi hiçbir tarz örtemez...





1 2
Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb