C Programlama While Döngüsündeki Tuhaflik
-
int sayi;
printf("Sayiyi Giriniz: (Veri girisi Yapilmayacaksa A ya Tiklayiniz)\n");
scanf("%d", &sayi);while (sayi!='A'){
printf("BASARILI\n");
printf("Sayiyi Giriniz: (Veri girisi Yapilmayacaksa A ya tiklayiniz)\n");
scanf("%d", &sayi);
}
printf("Donguye Girmedi:\n");
return 0;sayi A ya eşit değilken döngüye gir diyorum ama girmiyor. Ancak A ya == yaparsam döngüye giriyor bunun sebebi nedir ??
-
sayi !== 'A'
-
Kullanıcıdan decimal(%d) sayı isterken A giremezsin, sayı girmen lazım. 'A' dediğin şey 65 e eşit, onu elde etmek için 65 girmen gerek.
Her türlü girişi kabul etmek için %s ile stringe okuyup sscanf + %d ile stringden int değişkene atabilirsin, tabi str[0] == 'A' kontrolünden sonra. A gibi bir girdide sscanf 0 döndürür (değişkene bişey yazmaz), normal sayı girdisinde yazılan değişken sayısını döndürür.
-
%c ile okutup( char sayi;) sayiya aktarıp == ile kontrol etmelisin. Ayrıca debuggerları kullanmayı öğrenin boşa zaman kaybetmeyin. yada getch() fonksiyonu vardı onuda kullanabilirsin scanf yerine.
DrKill tarafından 05/Mar/13 01:14 tarihinde düzenlenmiştir -
Tugberk bunu yazdı
Kullanıcıdan decimal(%d) sayı isterken A giremezsin, sayı girmen lazım. 'A' dediğin şey 65 e eşit, onu elde etmek için 65 girmen gerek.
Her türlü girişi kabul etmek için %s ile stringe okuyup sscanf + %d ile stringden int değişkene atabilirsin, tabi str[0] == 'A' kontrolünden sonra. A gibi bir girdide sscanf 0 döndürür (değişkene bişey yazmaz), normal sayı girdisinde yazılan değişken sayısını döndürür.
sayi != 65
yazsa çözülür mü ?
-
zumsuk bunu yazdıTugberk bunu yazdı
Kullanıcıdan decimal(%d) sayı isterken A giremezsin, sayı girmen lazım. 'A' dediğin şey 65 e eşit, onu elde etmek için 65 girmen gerek.
Her türlü girişi kabul etmek için %s ile stringe okuyup sscanf + %d ile stringden int değişkene atabilirsin, tabi str[0] == 'A' kontrolünden sonra. A gibi bir girdide sscanf 0 döndürür (değişkene bişey yazmaz), normal sayı girdisinde yazılan değişken sayısını döndürür.
sayi != 65
yazsa çözülür mü ?
'A' bu zaten 65 demek. Sorun Tugberk hocamızın dediği gibi veriyi kullanıcıdan %d ile istemesi. %d ile adamın 65 girmesi lazım ki eşit olsun 'A' verisine.
DrKill tarafından 05/Mar/13 06:42 tarihinde düzenlenmiştir -
DrKill bunu yazdızumsuk bunu yazdıTugberk bunu yazdı
Kullanıcıdan decimal(%d) sayı isterken A giremezsin, sayı girmen lazım. 'A' dediğin şey 65 e eşit, onu elde etmek için 65 girmen gerek.
Her türlü girişi kabul etmek için %s ile stringe okuyup sscanf + %d ile stringden int değişkene atabilirsin, tabi str[0] == 'A' kontrolünden sonra. A gibi bir girdide sscanf 0 döndürür (değişkene bişey yazmaz), normal sayı girdisinde yazılan değişken sayısını döndürür.
sayi != 65
yazsa çözülür mü ?
'A' bu zaten 65 demek. Sorun Tugberk hocamızın dediği gibi veriyi kullanıcıdan %d ile istemesi. %d ile adamın 65 girmesi lazım ki eşit olsun 'A' verisine.
Abi adam A'ya bastiginda int degeri girecek '65', bizde kontrol ederken 65 diye kontrol ederiz. Ekrana basarkende sadece %c der geceriz. Boylece A basar.
fantazi ama boyle de cozulur diye dusunuyorum
-
@ zeybekustasi ;
hocam 2 kere ayni islemi yapmak yerine do-while kullanabilirsin. En az bir kere yapip, kontrole girer
