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

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.

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ı. 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

puanı char yap

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 gtü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ş :)

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 gtü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 :)

#include <stdio. h> int main {char puan;int aSay=0, bSay=0, cSay=0, dSay=0, eSay=0, fSay=0;printf ;printf ;while( (puan=getchar != EOF){switch { case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': default : }fflush ;} printf ;printf ;printf ;printf ;printf ;printf ;printf ;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 wasd tarafından 15/Oca/13 00:28 tarihinde düzenlenmiştir :)

case den çıktığında flush yapman gerek while bitmeden fflush ; ekle.

#include <stdio. h>int main { int puan; int aSay=0, bSay=0, cSay=0, dSay=0, eSay=0, fSay=0; printf ; printf ; while((puan = getchar != EOF){ switch } printf ; printf ; printf ; printf ; printf ; printf ; printf ; 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?

hocam kafam şişik biraz da ne yapmak istediğini anlamadım.. ya kitaptaki yazıyı gster ya da amacı syle.. 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 sylersen kodunu düzeltmeye çalışayım Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.

case den çıktığında flush yapman gerek while bitmeden fflush ; ekle. evet şimdi denedim bütün olay buymuş peki bu fflush'ın mantığı nedir

puan'ı char yap ve dngü başlıgını while(scanf != EOF) şu şekilde değiştir, ben codeblocks'ta denedim çalışıyor tabi byle işini grü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

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

Konu ile uzaktan alakalı olarak: Giriş akımlarını fflush ile temizlemek hatalıdır . fflush işlevi çıkış akımlarında kullanılmalıdır. getch işlevinin de int dndü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!

Şimdi ASCII kod kümesini kullanıyoruz (0-127), bir de konsolumuza gre genişletilmiş kısmı kullanıyoruz (128-255). char'ın boyutu 1 bayt kabul edilirse 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!

Konu ile uzaktan alakalı olarak: Giriş akımlarını fflush ile temizlemek hatalıdır . fflush işlevi çıkış akımlarında kullanılmalıdır. getch işlevinin de int dndü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 :)

YeniHarman bunu yazdı Konu ile uzaktan alakalı olarak: Giriş akımlarını fflush ile temizlemek hatalıdır . fflush işlevi çıkış akımlarında kullanılmalıdır. getch işlevinin de int dndü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 -1, otomatik casting nedeniyle int, char farketmez ancak, EOF kullanılıyorsa int, kalan her yerde char kullanmak daha iyi, zaten getchar'ın dnüş 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 . 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 yazar, fiziksel bellekte olmayıp kullanılmak istenen sayfaları mevcutsa standby dan yoksa diskten belleğe taşır . 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 syledikleri. Premature optimization is the root of all evil. Donald Knuth The first principle of optimization is don't. Brian W. Kernighan

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 :)

case'\n':case' ' ': break; Case lerin sonuna bu satırları ekleyince problem kalmadı. /n ve ' işaretlerini bylelikle veri olarak kabul etmiyormuş. Yardımlarınız için teşekkürler.