folder Tahribat.com Forumları
linefolder C - C++
linefolder C De Switch Case Yardım



C De Switch Case Yardım

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SARI
    SARI's avatar
    Banlanmış Üye
    Kayıt Tarihi: 29/Eylül/2009
    Erkek
    wasd bunu yazdı

    eof karakteri eof yazmak değil ctrl ve z tuşlarına aynı anda bastığında çıkan "^Z" dir. Soruna da bakıyorum şimdi.

    Edit: her case ++Say; ve break; diye 2 satırlık işlem yapıyo. Bu satırları {} içine almadığından olabilirmi?

    ekleme: aynen int değişkende char tutuyosun :D

     

    charla ne alakası var amk götünden sallamışsın karşim..

     

     


    Ban Sebebi : Molrada Haarket Eiğtti için Bdnlaanı... Türkçe öğretmenliği okuyan arkadaşım sana ders verebilir admin arkadaş :)
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wasd
    wasd's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek
    SARI bunu yazdı
    wasd bunu yazdı

    eof karakteri eof yazmak değil ctrl ve z tuşlarına aynı anda bastığında çıkan "^Z" dir. Soruna da bakıyorum şimdi.

    Edit: her case ++Say; ve break; diye 2 satırlık işlem yapıyo. Bu satırları {} içine almadığından olabilirmi?

    ekleme: aynen int değişkende char tutuyosun :D

     

    charla ne alakası var amk götünden sallamışsın karşim..

     

     

    amk int yüzünden demedimki harf değeri int değişkende tutmak saçma sadece o kadar :F


    :)
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    Konu ile uzaktan alakalı olarak: Giriş akımlarını fflush ile temizlemek hatalıdır (stdin de bir giriş akımıdır). fflush işlevi çıkış akımlarında kullanılmalıdır.

    getch işlevinin de int döndürdüğünü hatırlıyorum. Bir karakter char'dan daha büyük boyuttaki veri tipleri ile de tutmakta sakınca yok:)

    YeniHarman tarafından 15/Oca/13 01:31 tarihinde düzenlenmiştir

    Olaylara karışmayın!
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wasd
    wasd's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek
    YeniHarman bunu yazdı

    Konu ile uzaktan alakalı olarak: Giriş akımlarını fflush ile temizlemek hatalıdır (stdin de bir giriş akımıdır). fflush işlevi çıkış akımlarında kullanılmalıdır.

    getch işlevinin de int döndürdüğünü hatırlıyorum. Bir karakter char'dan daha büyük boyuttaki veri tipleri ile de tutmakta sakınca yok:)

    çok fazla bilgi sahibi değilim, tabiki bilgisayar açısından sakınca yok ama "int puan" demek sayı tutmak için kullanılıyor fikri yaratır insanda, kodun satır sayısı arttıkça kafa karıştırır, "char not" olarak kullanmak hem kafa karışmasını engeller hem az da olsa bellekten tasarruf ettirir 


    :)
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tugberk
    Tugberk's avatar
    Kayıt Tarihi: 04/Ekim/2009
    Erkek
    wasd bunu yazdı
    YeniHarman bunu yazdı

    Konu ile uzaktan alakalı olarak: Giriş akımlarını fflush ile temizlemek hatalıdır (stdin de bir giriş akımıdır). fflush işlevi çıkış akımlarında kullanılmalıdır.

    getch işlevinin de int döndürdüğünü hatırlıyorum. Bir karakter char'dan daha büyük boyuttaki veri tipleri ile de tutmakta sakınca yok:)

    çok fazla bilgi sahibi değilim, tabiki bilgisayar açısından sakınca yok ama "int puan" demek sayı tutmak için kullanılıyor fikri yaratır insanda, kodun satır sayısı arttıkça kafa karıştırır, "char not" olarak kullanmak hem kafa karışmasını engeller hem az da olsa bellekten tasarruf ettirir 

    Kafa karışıklığı konusunda haklısın ancak, while ((c = getchar()) != EOF) ifadesi C'de sık kullanılan bir kalıp ve int ile kullanılıyor, çünkü EOF değeri standart karakter seti dışında özel bir karakter olarak kabul ediliyor (int)-1, otomatik casting nedeniyle int, char farketmez ancak, EOF kullanılıyorsa int, kalan her yerde char kullanmak daha iyi, zaten getchar'ın dönüş türünün int olma sebebi de EOF.

    Bellek tasarrufu konusu daha yanlış anlaşılmış bir konu, öncelikle int yerine char kullanmak bellekte tasarruf sağlamaz. Zira sen kullansan da kullanmasan da işletim sistemi program başladığında sana thread başına belli bir stack alanı verir, genelde 1 mb ancak linker ayarları ile değiştirilebilir. İkincisi 32 bit işlemciler 4 baytlık değişkenlerle işlemleri 1 baytlık değişkenlerden daha hızlı yaparlar. 1 baytlık işlemler için ekstra prefix eklenir instructionlara (makina kodu komutları).

    Bir diğer konu işletim sisteminin memory manageri ile ilgili. Windows için, memory manager kullanılmayan sayfaları önce standby belleğe ardından modified a ve diske (pagefile.sys) yazar, fiziksel bellekte olmayıp kullanılmak istenen sayfaları mevcutsa standby dan (soft page fault) yoksa diskten belleğe taşır (hard page fault). Bu işlem yapılırken kullanılan sayfa boyutu en az 4kb dir. Özetle 1 bayt ve 4 bayt arasındaki fark işletim sistemi için anlamsızdır.

    Optimizasyon en kaçınılması gereken konuların başında geliyor programlamada. Eğer bir program çok yavaş çalışmıyorsa ve gerçekten hızlanması ya da daha az bellek kullanması gerekmiyorsa, optimizasyon yapmaya çalışmayın, siz programın tasarımı ile ilgilenin, hızı ile derleyici ilgilensin. İki büyük bilgisayar dehasının optimizasyon konusunda söyledikleri.

    Premature optimization is the root of all evil.  Donald Knuth

    The first principle of optimization is don't.  Brian W. Kernighan

     

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    niRvana_GG
    niRvana_GG's avatar
    Kayıt Tarihi: 01/Kasım/2012
    Erkek

    case'\n':case' ‘ ':

    break;

    -------


    Case lerin sonuna bu satırları ekleyince problem kalmadı. /n ve ‘ işaretlerini böylelikle veri olarak kabul etmiyormuş.Yardımlarınız için teşekkürler.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    niRvana_GG
    niRvana_GG's avatar
    Kayıt Tarihi: 01/Kasım/2012
    Erkek

    Bide şu EOF meselesine gelince. getchar() != EOF dışında kafadan sallama harfler girdigimde derleyici hata veriyor. Çıkış işlemi için -1 e karşılık gelen harflerimi girmem gerekiyor. ben cikis yaz dedigimde cikis yaptıramazmıyız . Yada int de yada char da 

    int cikis=-1;

    char cikis=-1;  olarak saklasak çıkarmı. (çikiş olayı aklıma yazarken geldi denemedim , deniyorum şimdi.)

     

    edit: denedigim şeyi denedim cikis olarak girersek olmuyor ama CTRL+Z yaparsak oluyor.

     

     

    niRvana_GG tarafından 15/Oca/13 21:36 tarihinde düzenlenmiştir
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    Şimdi ASCII kod kümesini kullanıyoruz (0-127), bir de konsolumuza göre genişletilmiş kısmı kullanıyoruz (128-255). char'ın boyutu 1 bayt kabul edilirse (standartta yanlış anladığım bir konudan bir tanesidir bu, şu an doğru şeklini hatırlamıyorum. Bu yüzden kafa karıştırmayayım.) ve unsigned char (signed char olursa 128-255 değerlerini yakalayamayız) olarak değeri okumuşsak platforma bağımlı olarak tanımlanmış -1 değerini yakalayamayabiliriz.

    (-1 (10) = 1111 1111 (2), işaretli;

    127 (10) = 0111 1111 (2), işaretli;

    255 (10) = 1111 1111 (2), işaretsiz)

     

    getchar işlevi ile konsoldan karakter okuyoruz, bu yüzden -1 tek bir karakter değil, 2 karakterdir:)

     

    http://ideone.com/jB6sY4

    YeniHarman tarafından 15/Oca/13 21:09 tarihinde düzenlenmiştir

    Olaylara karışmayın!
Toplam Hit: 2447 Toplam Mesaj: 19