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
    niRvana_GG
    niRvana_GG's avatar
    Kayıt Tarihi: 01/Kasım/2012
    Erkek
    #include <stdio.h>
    int main ()
    {
    int puan;
    int aSay=0,bSay=0,cSay=0,dSay=0,eSay=0,fSay=0;

    printf("Harf Notlarini Giriniz\n");
    printf("Cikis icin EOF karakterlerini Girin\n");

    while((puan = getchar()) != EOF)
    {
    switch (puan)
    {
    case 'A':case'a':
    ++aSay;
    break;
    case 'B':case'b':
    ++bSay;
    break;
    case 'C':case'c':
    ++cSay;
    break;
    case 'D':case'd':
    ++dSay;
    break;
    case 'E':case'e':
    ++eSay;
    break;
    case 'F':case'f':
    ++fSay;
    break;

    default:
    printf("Yanlis Bir Tuslama Yaptiniz\nTekrar Giriniz\n");
    break;
    }
    }

    printf("Her Harf Icin Toplam Sayi\n");
    printf("A:%d\n",aSay);
    printf("B:%d\n",bSay);
    printf("C:%d\n",cSay);
    printf("D:%d\n",dSay);
    printf("E:%d\n",eSay);
    printf("F:%d\n",fSay);

    return 0;

    }

    -------------------------------
    EOF yazdımgımda çıkmıyor.AdanF ye herhangi bir harf girdigimde 'Yanlis Bir Tuslama Yaptiniz.Tekrar Giriniz' diyor. Başka bir harf girince gene aynısı oluyor.
    Deitelin kitabındakinin aynısı bu. Ona copy paste yaptım gene aynı hatalar. Nerde yanlış yapıyorum ?
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wasd
    wasd's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    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

    wasd tarafından 14/Oca/13 23:54 tarihinde düzenlenmiştir

    :)
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsDayGoesBy
    AsDayGoesBy's avatar
    Kayıt Tarihi: 18/Temmuz/2005
    Erkek

    puanı char yap

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    niRvana_GG
    niRvana_GG's avatar
    Kayıt Tarihi: 01/Kasım/2012
    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?

    case den öncede aldım sonrada aldım {} içine her case break leri gene aynı

    {case ++say break;}

    case { ++say break;}

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsDayGoesBy
    AsDayGoesBy's avatar
    Kayıt Tarihi: 18/Temmuz/2005
    Erkek

    case den çıktığında flush yapman gerek

    while bitmeden

    fflush(stdin);

    ekle.(charla akalası yokmus)

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    hocam kafam şişik biraz da ne yapmak istediğini anlamadım.. ya kitaptaki yazıyı göster ya da amacı söyle.. 

    EOF demişsin okunan karakterleri puan a eşitlemişsin türüne int demişsin.. bi değişik geldi. 

    net olarak nasıl bi sonuç istediğini söylersen kodunu düzeltmeye çalışayım


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    splintercell
    splintercell's avatar
    Kayıt Tarihi: 28/Eylül/2008
    Erkek

    puan'ı char yap

    ve döngü başlıgını

    while(scanf("%s",&puan) != EOF)

    şu şekilde değiştir, ben codeblocks'ta denedim çalışıyor tabi böyle işini görürse


    edit: çalışıyo dedim ama:D not eklemede sorun oldu gibi bu sefer sen yine bi dene

    splintercell tarafından 15/Oca/13 00:05 tarihinde düzenlenmiştir
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    splintercell
    splintercell's avatar
    Kayıt Tarihi: 28/Eylül/2008
    Erkek
    AsDayGoesBy bunu yazdı

    case den çıktığında flush yapman gerek

    while bitmeden

    fflush(stdin);

    ekle.(charla akalası yokmus)

    evet şimdi denedim bütün olay buymuş

    peki bu fflush'ın mantığı nedir

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wasd
    wasd's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    #include <stdio.h>

    int main()
    {
    char puan;
    int aSay=0,bSay=0,cSay=0,dSay=0,eSay=0,fSay=0;
    printf("Harf Notlarini Giriniz\n");
    printf("Cikis icin EOF karakterlerini Girin\n");
    while( (puan=getchar()) != EOF)
    {
    switch (puan)
    {
    case 'A':{++aSay;break;}
    case 'a':{++aSay;break;}
    case 'B':{++bSay;break;}
    case 'b':{++bSay;break;}
    case 'C':{++cSay;break;}
    case 'c':{++cSay;break;}
    case 'D':{++dSay;break;}
    case 'd':{++dSay;break;}
    case 'E':{++eSay;break;}
    case 'e':{++eSay;break;}
    case 'F':{++fSay;break;}
    case 'f':{++fSay;break;}
    default :{printf("Yanlis Bir Tuslama Yaptiniz\nTekrar Giriniz\n");break;}
    }
    fflush(stdin);
    }
    printf("Her Harf Icin Toplam Sayi\n");
    printf("A:%d\n",aSay);
    printf("B:%d\n",bSay);
    printf("C:%d\n",cSay);
    printf("D:%d\n",dSay);
    printf("E:%d\n",eSay);
    printf("F:%d\n",fSay);
    return 0;
    }

     

    edit: evet buymuş çözüm.

    @nirvana: http://cboard.cprogramming.com/c-programming/21878-fflush-stdin.html 

    https://www.google.com.tr/search?q=fflush(stdin) 

    wasd tarafından 15/Oca/13 00:28 tarihinde düzenlenmiştir

    :)
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    niRvana_GG
    niRvana_GG's avatar
    Kayıt Tarihi: 01/Kasım/2012
    Erkek
    Unbalance : Butun olay switch case yapisi ile girilen notu saydirma. A B die girecez. Cikis yaptigimizda kactane a var kac tane b var onu ekrana yazdiracaz.
    AsDayGoesBy: Biraz daha acabilirmisin. fflush olayini. Daha yeniyim C de
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsDayGoesBy
    AsDayGoesBy's avatar
    Kayıt Tarihi: 18/Temmuz/2005
    Erkek
    niRvana_GG bunu yazdı
    Unbalance : Butun olay switch case yapisi ile girilen notu saydirma. A B die girecez. Cikis yaptigimizda kactane a var kac tane b var onu ekrana yazdiracaz.
    AsDayGoesBy: Biraz daha acabilirmisin. fflush olayini. Daha yeniyim C de


    Bufferda \n karakteri kaldığı için while tekrar girdiğinde \n in silinmesi gerekiyor.

    (\n yeni satır anlamına gelir, enter ile girdiğin için \n de gidiyor)

Toplam Hit: 2421 Toplam Mesaj: 19