IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   C ve C++ (https://www.ircforumlari.net/c-ve-c/)
-   -   Metin Uzunluğu Bulmak (https://www.ircforumlari.net/c-ve-c/458376-metin-uzunlugu-bulmak.html)

aSi 02 Mart 2012 23:37

Metin Uzunluğu Bulmak
 
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Pointer kullanılarak hazırlanmış bu programda, metnin uzunluğunu bulmaca oynuyoruz!. Oyun şöyle oynanmakta: ben kodların arasına metni yazdım, bilgisayar ise uzunluğu buluyor. Programcılıkta birden fazla çözüm vardır. Bu problemin de bir çok çözümü var.Ancak, “önümüzdeki günlerde bela olmadan önce halletmeliyiz” diye düşünerek program buram buram pointers kokuyor. Kodlar içerisinde her zamanki gibi açık açık anlatmaya çalıştım, soru cevap bolumu de hazırladım. Yazdım da yazdım anlayacağınız. Soru cevap bölümünü sonraki yazılarda da kullanırsam eğer, şizofren olduğumu anlayınız, gerekeni yapınız…

Kod:

#include<stdio.h>
#include<conio.h>

int metuz(char *);

main(){
    char kar[50];
    gets(kar);
    printf("Metinin uzunlugu: %d'dir", metuz(kar));
getch();
}

int metuz(char *p){    //fonksiyona dizinin ilk karakterinin adresi geliyor. mesela FC100

    char *q=p;          //biz bu FC100'u q da sakliyoruz. tabi FC100 adres oldugundan
                        //    normal bir degiskende saklamamiz sacmaliktir. *'li degiskende saklamaliyiz.

    while(*q!=NULL)    //q'nun tuttugu adresteki deger bos oldukca,
        q++;            //    q'yu bir arttir.(bu iki satir bunu soyluyor)

    return q-p;        //p'de FC100 saklaniyodu. q arta arta FC120 oldu diyelim
                        //    q-p=20'den o zaman 20 karakterliymis diyo gonderiyo hemen
}
/*
Soru 1:
    FC120-FC100=20 yani char-char=integer nasil oluyor ?

Cevap 1:
    Simdi bak arkadasim. teknik olarak haklisin. floattan float cikinca char kalmaz, float kalir, evet.
    Ama derleyici bunu dusunmus. mesela FC520-FA210 diye sorunca "himm B310 olmali. hadi bunu gondereyim de, ordaki
    olasi bi sistem dosyasini veya bilmem ne bilgisinin icine edeyim" dememesi icin bunu hemen integer degere ceviriyor.



Soru 2:
    Fonksiyona diziyi gonderdik. bkz: metuz(kar) ifadesi.
    Fonksiyon diziyi alirken pointer olarak aldik. bkz:char *p ifadesi. sence de arada bir tutarsizlik yok mu?

Cevap 2:
    Hayir arkadasim. tutarsizlik ne arar c'de. metuz(kar) deyince aslinda diziyi gondermiyoruz.evet oyle gozukuyor ama degil.
    "kar" dedigimiz yer de koca bir dizi degil, dizinin ilk elemaninin adresi bulunur. fonksiyona onu gondeririz.



Soru 3:
    Nasil yani?

Cevap 3:
    simdi arkadaisim, bak. orneklerle aciklayayim.
    kar ve &kar[0] ayni sey. birini yazma digerini yaz. derleyici  zeki bir varlik.anlar o. bazen net konusmak lazim. edebiyat falan,  sayisal beyinlerimiz anlamayabilir.



Soru 4:
    Babam boyle pasta yapmayi nerden ogrendi?

Cevap 4:
    lan yuru git arkadasim..


Soru 5:
    iyi be.

Cevap 5:
    kizdi ya..


neyse benim aklima baska soru gelmedi. bir kodun daha sonuna geldik. bir sonraki kodda gorusuruz.
*/





Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 06:36.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk