Şimdi Ara

Döngü problemi

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
4
Cevap
0
Favori
190
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
Öne Çıkar
0 oy
Sayfa: 1
Giriş
Mesaj
  • #include <stdio.h> 
    int main(){
    int choice;
    do
    {
    printf("Enter your choice: ");
    scanf("%d", &choice);
    switch (choice)
    {
    case 1:
    {
    printf("Hello World\n\n");
    break;

    }
    case 2:
    {
    printf("Hello World2\n\n");
    break;
    }
    case 3:
    {
    printf("Hello World3\n\n");
    break;
    }
    default:
    {
    return 0;
    break;
    }
    }
    } while (choice >= 1 && choice <= 3);
    return 0;
    }




    1) Böyle bir programda ilk başta seçime anlamsız değerler girince (* , < ' ^ / * - gibi.) olması gerektiği gibi program sonlanıyor.

    2) Ancak ilk önce seçime 1 2 ya da 3'ten herhangi birini girip ve ardından bir sonraki seçimde anlamsız değerler girince (* , < ' ^ / * - gibi.) döngü sonsuza giriyor.

    İlkinde böyle bir problem olmuyorken neden ikincisinde oluyor?



    < Bu mesaj bu kişi tarafından değiştirildi adsızhesap2 -- 15 Temmuz 2015; 15:06:40 >



    _____________________________
  • Scanf'i araştırman lazım biraz onunla ilgili muhtemelen. Scanf'e int istediğini söylüyorsun (buradaki int'ten kasıt sayı anlamında değil string to int gibi düşünebilirsin) sayının adresini de veriyorsun, sonra sayı olarak yorumlanamayacak bir girdi yapıyorsun (0-9 dışındaki her girdi de öyle olacaktır muhtemelen)
    _____________________________
  •  
    int choice;
    do
    {
    choice = 0;
    printf("Enter your choice: ");
    scanf("%d", &choice);

    switch (choice)
    {
    case 1:
    printf("Hello World\n\n");
    break;
    case 2:
    printf("Hello World2\n\n");
    break;
    case 3:
    printf("Hello World3\n\n");
    break;
    default:
    return 0;
    }
    }while(choice >= 1 && choice <= 3);
    return 0;


    Sorun her seferinde choice'a initial bir değer atamadığın için oluyor. Sebebini sorma, koca bir dersin konusu :D
    Ayrıca return 0 dedikten sonra break yazmışsın, ulaşılamaz kod satırı olmuş. öyle hatalar yapmamaya özen göster.
    Başarılar...



    < Bu mesaj bu kişi tarafından değiştirildi axafa -- 16 Temmuz 2015; 2:16:19 >
    _____________________________




  • Bu arada süslü parantezlere de gerek yok case'leri ayırmak için. switch'e 2 inputunu verdin diyelim, süslü parantez olsa da olmasa da case 2: nin altından switch bloğunun sonuna kadar çalıştırır program. break'i gördüğü anda program bloğun dışına çıkar (step out) yani devamını okumasını engellemiş oluruz.

    Unutmadan, default'u yazmana da gerek yok :D zaten while'ın şartı ancak 1 2 ve 3 için dögüyü canlı tutuyor.



    < Bu mesaj bu kişi tarafından değiştirildi axafa -- 16 Temmuz 2015; 2:37:53 >
    _____________________________
  • Yapay Zeka’dan İlgili Konular
    tuhaf bir reset sorunu
    18 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.