Bildirim
Sonsuz Döngü-Yardım
Daha Fazla 
Bu Konudaki Kullanıcılar:
Daha Az 

2 Misafir - 2 Masaüstü

Giriş
Mesaj
-
-
Kodu paylaşırsanız yardımcı olabilirim. -
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
unsigned soru(void);
int cev(unsigned);
int main()
{
int i;
do{
i=cev(soru());
}while(i!=0);
getch();
return 0;
}
unsigned soru(unsigned x, unsigned y)
{
unsigned i, j;
srand(time(NULL));
i=rand()%10;
j=rand()%10;
printf("%u*%u kactir\n", i, j);
return i*j;
}
int cev(unsigned ans)
{
unsigned cevap, i;
srand(time(NULL));
do{
i=rand()%4;
scanf("%u", &cevap);
if(i==0){
if(cevap==ans){
printf("Mukemmel\n");}
else if(cevap!=ans){
printf("Yanlis. Lutfen bir daha deneyin\n");}
else
break;}
else if(i==1){
if(cevap==ans){
printf("Cok Guzel\n");}
else if(cevap!=ans){
printf("Tekrar deneyin\n");}
else
break;}
else if(i==2){
if(cevap==ans){
printf("Aferin\n");}
else if(cevap!=ans){
printf("Pes Etmeyin\n");}
else
break;}
else if(i==3){
if(cevap==ans){
printf("Boyle devam et\n");}
else if(cevap!=ans){
printf("Hayir. Deneme devam edin\n");}
else
break;}
}while(cevap!=ans);
printf("Cikmak icin h giriniz\n");
i=getchar();
if(getchar()=='h'||getchar()=='H')
return 0;
else
return 1;
}
< Bu mesaj bu kişi tarafından değiştirildi kmlmndc -- 5 Mayıs 2013; 20:51:32 >
-
Biraz karışık duruyor, deitel in kitabında bulunan 5. bolum 33 nolu alıştırma. -
Direkt soruyu cevaplayayım. Kod karışık biraz, derleyemedim de ben hata verdi.
//Soru
i=rand%10;
k=rand%10;
cevap = i*k;
dogru = rand%4
yanlis = rand%4
%d x %d = ?
yanit -> scanf
if(yanit==cevap)
if(dogru==1)
//1.ifade
if(dogru ==2)
// 2. ifade
else // yanit!=cevap
if(yanlis==1)
//1. ifade
şeklinde basitçe düzenleyebilirsiniz. İlla nerede hata olduğunu merak ediyorsanız buluruz elbette. Fakat sade kod yazmak daha iyidir, karışık kodlarda olur böyle şeyler. -
Aslında sormak istediğim şey şu sayı bekleyen bir döngüde harf ya da karakter girilince sonsuz döngüye girmesinin nedeni nedir?Örneğin aşağıdaki kod nispeten daha sade gibi onda da aynı şey oluyor. Rakam ya da sayılar ile ilgili sorun yok ama harf ve ya karakter girilince sonsuz döngü oluşuyor
#include<stdio.h>
int main()
{
long int i=0, toplam=0, sayac=0;
while(i!=9999){
printf("bir sayi giriniz");
scanf("%d",&i);
toplam+=i;
sayac++;}
printf("girdiginiz sayilarin toplami %d dir",(toplam-9999)/(sayac-1));
getch();
return 0;
} -
scanf te her değişken türü için bir belirteç var. %d int, %c char, %s char* ... gibi. Bunlar değişken türüne göre tam olarak uyuşmalı. Uyuşmaması çalışma zamanında hataya yol açar.
Eğer girişi kontrol etmek istiyorsan %s ile string türünde alıp sonra istediğin türe çevirebilirsin. Misal tamsayı almak istiyorsun ama giriş hatasına karşın koruma olsun istedin.
char str[20];
scanf("%s", str);
int len = strlen(str);
if(len > 9) printf("En fazla 9 haneli sayı girin\n");
for(int i = 0; i < len; ++i)
if(!isdigit(str) printf("Sadece rakam girin\n");
// Giriş sorunsuz ise
int sayi = atoi(str);
Unutmadan gerekli bağlantıları da vereyim lazım olur. scanf için referans.
http://www.cplusplus.com/reference/cstdio/scanf/
String dönüşüm fonksiyonları vs.
http://www.cplusplus.com/reference/cstdlib/
Karakter kontrol fonksiyonları.
http://www.cplusplus.com/reference/cctype/
< Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 5 Mayıs 2013; 22:21:06 >
-
İlginiz için çok teşekkür ederim, sorunun sebebini anlamak iyi oldu. Sağolun.
Sayfa:
1
Ip işlemleri
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X