Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
17
Cevap
1256
Tıklama
0
Öne Çıkarma
DevC++ sorunu
T
10 yıl
Yarbay
Konu Sahibi

Merhaba arkadaşlar bir sorum olacaktı. switch case çalışması yapıyorum fakat şöyle bir sorunum var.
#include <stdio.h> 
int main()
{


char karakter;
secim : printf("Bir karakter giriniz.\n"); scanf("%c",&karakter);

switch(karakter)
{
case 'a': printf("Dogru yanit\n"); break;
case 'b':printf("Bip\n"); break;
case 'c': printf("Cok yanlis yoldasin\n"); break;
default: printf("basit dusun\n"); goto secim; break;


}


}




bu kod ekrana böyle bir şey yazdırıyor. iki kere yanlış girdiniz diyor, ben bunu engellemek istiyorum. case 1: case 2: şeklinde yaparken sorun olmuyor ama harflerle böyle bi sorun çıkıyor.

< Resime gitmek için tıklayın >

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



B
10 yıl
Çavuş

Default: kısmında neden goto kullandın? Seçim: deki soruyu default kısmına koy. Ayrıca goto dögülerinden sakın modern dillerde pek kullanılmıyor. İki defa yazdırmasının sebebi scanf ile klavyeden veri aldığında hem yazılan hem de yeni satır '\n' alınır. Ancak sadece veri alındığı için '\n' bufferda kalıyor ve sonraki scanf fonksiyonunda bu kullanılıyor.
Edit: tek karakter girişi için getche() kullanabilirsin. Örneğin:
#include <stdio.h> 

int main()
{
char karakter;
while(1)
{
karakter = getche();
switch(karakter)
{
case 'a':
printf("Dogru yanit\n");
break;
case 'b':
printf("Bip\n");
break;
case 'c':
printf("Cok yanlis yoldasin\n");
break;
default:
printf("basit dusun\n");
break;
}
}
}





< Bu mesaj bu kişi tarafından değiştirildi BRTKNOZ -- 29 Haziran 2015; 10:18:07 >

< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
T
10 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: BRTKNOZ

Default: kısmında neden goto kullandın? Seçim: deki soruyu default kısmına koy. Ayrıca goto dögülerinden sakın modern dillerde pek kullanılmıyor. İki defa yazdırmasının sebebi scanf ile klavyeden veri aldığında hem yazılan hem de yeni satır '\n' alınır. Ancak sadece veri alındığı için '\n' bufferda kalıyor ve sonraki scanf fonksiyonunda bu kullanılıyor.
Edit: tek karakter girişi için getche() kullanabilirsin. Örneğin:
#include <stdio.h> 

int main()
{
char karakter;
while(1)
{
karakter = getche();
switch(karakter)
{
case 'a':
printf("Dogru yanit\n");
break;
case 'b':
printf("Bip\n");
break;
case 'c':
printf("Cok yanlis yoldasin\n");
break;
default:
printf("basit dusun\n");
break;
}
}
}


anladım hocam ama bunu engelleyemez miyim?
ve yazdığınız kodu devc++ da çalıştıramadım.


Bu mesaja 1 cevap geldi.
B
10 yıl
Çavuş

Bunu değiştiremezsin new line karakteri ENTER a basıldığı anda üretilir. Komut isteminde vardır bu. Ayrıca tam olarak nasıl bir hata alıyorsun? Ben Ubuntu da ve Dev-C++ 5.11 de derleyip çalıştırdım. Belki 4.9.9.2 kullanıyorsundur. <conio.h> kütüphanesini eklemeyi dene. Ama buraya mutlaka aldığın hatayı yaz.


Bu mesaja 1 cevap geldi.
T
10 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: BRTKNOZ

Bunu değiştiremezsin new line karakteri ENTER a basıldığı anda üretilir. Komut isteminde vardır bu. Ayrıca tam olarak nasıl bir hata alıyorsun? Ben Ubuntu da ve Dev-C++ 5.11 de derleyip çalıştırdım. Belki 4.9.9.2 kullanıyorsundur. <conio.h> kütüphanesini eklemeyi dene. Ama buraya mutlaka aldığın hatayı yaz.

conio.h kütüphanesini ekleyince çalıştı. ben yeni yeni öğrenmeye başladım, böyle enter'sız olabileceğini bilmiyordum.


Bu mesaja 1 cevap geldi.
B
10 yıl
Çavuş

Derleyicilerin verdiği hataları bilmen çok işine yarar. Eminim ileride daha derinlemesine gireceksin değişkenler pointerlar filan çok karışabilir. Tavsiyem Visual Studio kurman. Debug modu hakkında bilgi edinirsen (breakpoint koymak, memoryleri incelemek vs.) rahatlıkla hata tespiti yapabilirsin. İyi akşamlar..

EDIT: Bu arada şu new line karakteri ile ilgili bir ekleme yapayım. Fazla bilgi göz çıkarmaz diyerekten .. Şimdi bizim C veya C++ ta yazdığımız programların bir penceresi yok. Biz programa çift tıkladığımızda pencere çıkıyor olabilir fakat bu iş için derleyici programı derlerken işletim sistemine şununla çalıştırılacak diyor. Ki bu Windows da cmd.exe oluyor. Elbette cmd.exe ninde kendine ait kuralları var. Bu yüzden böyle bir sorun ortaya çıkıyor. Biraz uzatmış olabilirim ama umarım anlamışsındır.





< Bu mesaj bu kişi tarafından değiştirildi BRTKNOZ -- 29 Haziran 2015; 20:00:16 >
Bu mesaja 1 cevap geldi.
T
10 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: BRTKNOZ

Derleyicilerin verdiği hataları bilmen çok işine yarar. Eminim ileride daha derinlemesine gireceksin değişkenler pointerlar filan çok karışabilir. Tavsiyem Visual Studio kurman. Debug modu hakkında bilgi edinirsen (breakpoint koymak, memoryleri incelemek vs.) rahatlıkla hata tespiti yapabilirsin. İyi akşamlar..

EDIT: Bu arada şu new line karakteri ile ilgili bir ekleme yapayım. Fazla bilgi göz çıkarmaz diyerekten .. Şimdi bizim C veya C++ ta yazdığımız programların bir penceresi yok. Biz programa çift tıkladığımızda pencere çıkıyor olabilir fakat bu iş için derleyici programı derlerken işletim sistemine şununla çalıştırılacak diyor. Ki bu Windows da cmd.exe oluyor. Elbette cmd.exe ninde kendine ait kuralları var. Bu yüzden böyle bir sorun ortaya çıkıyor. Biraz uzatmış olabilirim ama umarım anlamışsındır.

anladım çok teşekkürler
C yi bitirdikten sonra C++'a geçebilirim.


Bu mesaja 1 cevap geldi.
B
10 yıl
Çavuş

Bende aynı yerden geliyorum dediklerinizi Netbeans ile denedim conio.h eklediğimde hata variyor ve getche fonksiyonuda aynı şekilde.

derleyici olarak cygwin kullanıyorum.

< Resime gitmek için tıklayın >





< Bu mesaj bu kişi tarafından değiştirildi berkcan123 -- 30 Haziran 2015; 2:24:58 >
Bu mesaja 1 cevap geldi.
T
10 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: berkcan123

Bende aynı yerden geliyorum dediklerinizi Netbeans ile denedim conio.h eklediğimde hata variyor ve getche fonksiyonuda aynı şekilde.

derleyici olarak cygwin kullanıyorum.

< Resime gitmek için tıklayın >

arkadaşı çağıralım dostum



@BRTKNOZ




Bu mesajda bahsedilenler: @BRTKNOZ
B
10 yıl
Çavuş

Yetiştim durun . Şimdi öncelikle bir hata aldığınızda onu buraya gönderin başka türlü hatayı tam bulamazsınız. Şimdi üzücü bir bilgi vermem gerekiyor. Bizim bu kadim MinGW aslında bir linux derleyicisi açılımı zaten Minimalist GNU for Windows. Peki bu ne demek? Bunun anlamı aslında biz Linux te getch () ve ailesini kullanamıyoruz. Ayrıca conio.h kütüphanesi de DOS ortamı için yazılmıştır. Bu nedenle netbeans ne yapacağını bilemiyor ve hata veriyor. Sanırsam conio.h adlı kütüphaneyi include ederkende hata vermiş. Aklıma gelen iki çözüm var biri başka bir derleyici ile çalış diğeri getch () fonksiyonunu kendin yaz. İnternette getch for windows netbeans gibi şeyler ara ama çıkanlar genel olarak linux dağıtımları içindir. Kolay gelsin..



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
B
10 yıl
Çavuş

Humm oysaki arayüzü çok güzeldi :( VB studio indirmek zorunda kalacağım sanırım bende aslında Ubuntu GNOME kullanıyorum yani kullanmaya çalışıyorum :D
ama oyun oynadığım için windows a mahkumum. Netbeans ı da ubuntu da programlama yacağım zamanlarda duymuştum demek windows da sıkıntılı :(


Bu mesaja 1 cevap geldi.
B
10 yıl
Çavuş

Ne yazıkki conio.h in içinde yer alan gotoxy(), getch(), clrscr(), kbhit() gibi fonksiyonlardan hiçbiri Linux dağıtımlarında bulunmuyor. Zaten yavaş yavaş Windows'da da kalkmaya başladı. O yüzden eğer elinizde TurboC kitapları varsa atın çöpe. Modern derleyiciler yeni işlemci mimarileriyle çalıştıklarından 16 bitlik programları derlemiyorlar.


Bu mesaja 1 cevap geldi.
B
10 yıl
Çavuş

Aslında benim amacım Mikrodenetleyici, işlemci vs programlama ARM ile çalışmak. Baktım ki C her yerde çoğu C ile programlanabilir bilgisayarda dahil buna sonra linux kernel C ile yazıldığını okudum bir yerde dedim benim için C en iyisi En temel her şeydir şimdi C ile başlıycam ilerde artık C++ pyhton filan php de öğrenirim lazım olur illaki.
Arkadaşlar programlamayı çok zor görüyor mesela ama ben çok zevk alıyorum :D



B
10 yıl
Çavuş

Elbette renkler ve zevkler tartışılmaz. Ama C her şeyin olmasada büyük dil ailelerinin temel mantığını oluşturuyor. Ayrıca kullanım alanı çook geniştir cpp ve c nin. Mikroişlemci programlama filan istiyorsan assembly yi inline olarak kullanabilirsin. Ayrıca winapi ler ile windowsta tam kontrol sağlarsın. Yani c ile başlamakla doğru yapmışsın (bence). Mantığı kaptıktan sonra gerisi gelir zaten.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
B
10 yıl
Çavuş

valla hocam şöyle anlatayım assmbly güzel dil hoş basit fazla komutu yok ama biz okulda bunu kullanıyorduk hataları hoca bile düzeltemiyordu ve çok çok uzun oluyor.
asm de sayfalarca olan kodu 15 satırda yazıyorum C de gelde C öğrenme hadi :D
quote:

assembly yi inline olarak kullanabilirsin. Ayrıca winapi ler ile windowsta tam kontrol sağlarsın
Burayı anlamadım cahilliğime ver :(


Bu mesaja 1 cevap geldi.
B
10 yıl
Çavuş

Hocam isterseniz konuyu dağıtmayalım ben bu iki konuyu özelden anlatayım size. Neticede konun açılma sebebi belli



G
10 yıl
Binbaşı

Ben internette goruyorum cogu kisi Eclipse programini kullaniyor ( Mac olarak ama windows ta kullananlarda oluyor ) onu deneyebilirsinjz



< Bu ileti mobil sürüm kullanılarak atıldı >

S
4 yıl
Er

bende case 'A' yı kabul etmiyor ne yaparsam yapayımda düzelmiyor.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.