C'de İllegal Durumlar Hakkında Yardım..
-
Merhaba arkadaşlar, ödevi bitirdim sadece illegal durumlar kaldı, şöyle ki;
int a; olarak tanımladıktan sonra kullanıcı harf girerse kullanıcıdan tekrar değer isticek ya da ondalık bi değer girerse..
şimdiden teşekkür ederim..
-
do while yapısını kullanacaksın bu gibi durumlarda. gelen veriyi nasıl kontrol ediyorduk hatırlamıyorum c içinde hazır bir fonksiyon yoktu ama hatırladığım kadarıyla. sen googleda "c is number" diye arat çıkar bişiler
-
#include<stdio.h>
#include<conio.h>
main()
{
int a;
printf("any value = ");
scanf("%d",&a);
while(a!=(int)a)
{
printf("any value again = ");
scanf("%d",&a);
}
getch();
}
bu şekilde yaptım ama olmadı nedense, tavsiye için teşekkürler bakıyorum..
-
Soyle birsey olabilir.
int a;
a = scanf("%d", a);
if(!isdigit(a))printf("illegal karakter girisi yaptiniz");
-
#include<stdio.h>
int main()
{
int v;
int kontrol = 0;
do{
if(scanf("%d",&v)==1){
kontrol = 1;
}
}while(kontrol==0)
}
bunu bir dene -
sniperscope bunu yazdı
Soyle birsey olabilir.
int a;
a = scanf("%d", a);
if(!isdigit(a))printf("illegal karakter girisi yaptiniz");
bu şekilde olmalı bencede yalnız kullanımı hatalı gibi geldi bana.
isdigit komutunun kullanımına bakarsın
-
maalesef olmadı.. harf girince ve döngü olunca sonsuz döngüye giriyo program, if yapısı kullanınca çalışıyo ama sürekli değer alamıyorum..
-
Bi ara ben de kafayı takmıştım o işe, yalnız şurada yanlışın var: a'yı int olarak tanımlayıp başlıyosun işe. Zaten int olarak tanımladığın için adam harf girince sorun çıkıyo. İlk başta adam ne girerse girsin programın çalışmayı durdurmaması için string alıp, aldığın string sayı mı harf vs. de içeriyo mu onu kontrol edip, sayı ise onu integer'a çevirmen gerekir. Integer string dönüşümlerinde atoi & itoa fonksiyonları sana yardımcı olur, sayı mı değil mi için de bir for döngüsü yazarsın kendin çok da zor değil.
-
KuZeTaR bunu yazdı
maalesef olmadı.. harf girince ve döngü olunca sonsuz döngüye giriyo program, if yapısı kullanınca çalışıyo ama sürekli değer alamıyorum..
o zaman donguyude break ile sonlandir.
Edit: Visual studio da denedim olmadi.
sniperscope tarafından 25/Eki/12 01:36 tarihinde düzenlenmiştir -
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
bool isint(char *str);
int main(void)
{
int sayi;
char s[10];
bool issinteger;
printf ("is integer? > ");
gets(s);
issinteger=isint(s);
if (issinteger==true) printf ("sayi girdiniz\n");
if (issinteger==false) printf ("karakter girdiniz\n");
system ("PAUSE");
}
bool isint(char *str)
{
int i;
bool isthereanycharacters=false;
if (str[0]=='-')
{
for (i=1; i<strlen(str); i++)
{
if ( (int)(str[i]-48)<0 || (int)(str[i]-48)>9 ) {isthereanycharacters=true; break;}
}
if (isthereanycharacters==true) return false;
if (isthereanycharacters==false) return true;
}
else
{
for (i=0; i<strlen(str); i++)
{
if ( (int)(str[i]-48)<0 || (int)(str[i]-48)>9 ) {isthereanycharacters=true; break;}
}
if (isthereanycharacters==true) return false;
if (isthereanycharacters==false) return true;
}
}İlk karakter - ise negatif olduğunu da algılayan bi şeyler yazmışım şöyle, kurcala işine yarar belki.
-
break kullanmak olabilir aslında ama if içinde break kullanılmıyo diye biliyorum, diğer kod için de çok teşekkür ederim algoritmalarını kullanarak bişeyler yazabilirm sanırım, hazır fonksiyon kullanmak yasak ve daha do-while ı göstermedikleri için kullanamıyorum :D switch-for-while ve if kullanmak serbest.. :))
