Şimdi Ara

DevC++ sorunu

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
19
Cevap
0
Favori
1.210
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 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.

     DevC++ sorunu







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




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




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




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




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

    derleyici olarak cygwin kullanıyorum.

     DevC++ sorunu



    < Bu mesaj bu kişi tarafından değiştirildi berkcan123 -- 30 Haziran 2015; 2:24:58 >
  • 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.

     DevC++ sorunu


    arkadaşı çağıralım dostum



    @BRTKNOZ
  • 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ı >




  • 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ı :(
  • 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.
  • 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
  • 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ı >
  • 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 :(
  • Hocam isterseniz konuyu dağıtmayalım ben bu iki konuyu özelden anlatayım size. Neticede konun açılma sebebi belli
  • 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ı >
  • bende case 'A' yı kabul etmiyor ne yaparsam yapayımda düzelmiyor.

  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.