1. sayfa
tam inceleyecek vakit bulamadım şöyle bir baktımda else ler yerine if kullanmayı dermisin bi. |
olmuyor:( |
//sayı tahmin oyunu böyle olunca oluyor sorun rand fonksiyonunu döngü içerisine yazmaktan kaynaklanıymuş...fakat neden böyle yapıyor anlamadım ne fark ederki? |
while(tahmin!=-1) tekrar: ..... ..... goto tekrar; Sorun goto ![]() Derleyici az bile şarlamış, ben olsam bilmem ne yapardım artık ![]() ![]() Biz bu işi ilk öğrenirken, bir BASIC vardı, başka bir şey yoktu. Tamam bir şeyler vardı, 8086 PC'ler için, ama disketini filan nerden bulacaksın ki, COBOL'muş, C'ymiş vs. Hatta 8086 CPU, 64K RAM makineyi bulmak bile bir şeydi zaten. Ve Commodore'lar, ZX-81'ler vs. için defacto dil, assembler ve BASIC'ti. 8086'larda da elbette, meşhur GW-BASIC.. Hatta IBM'in INT 18H BASIC'i.. Ve o dillerde JMP ila GOTO bizim işimizi harika bir şekilde görürdü. Zaten başka bir şey yok ki, nerde while filan? Bu yüzden, itiraf edeyim, yapısal programlamaya intibakımız zor oldu. Hatta sırf bu yüzden PASCAL'ı hiç sevemedim. Siz siz olun, goto'yu unutun. Ve ardından goto'yu bir daha unutun. |
2. mesajımda goto suz yaptım bi bakarmısn:)..mesajı okursan bişi yazdım bi zahmet ona göre cevap veririmisn teşekkülrer ilgilendiğin içn |
Gördüğüm kadarıyla, çalışmasını engelleyecek bir hata yok. Fakat çalışıyor olmak, iyi olmak demek değil maalesef. Mesela: if (tahmin == -1) break; Eğer hiç tahmin yapmadan çıkarsa, 50 puan alacaktır sanıyorum oyuncu. Skorboarda yazılmak için iyi bir yöntem ![]() Ama asıl sorun, kullanıcın bundan haberdar olmaması. Paskalya yumurtası koymak gibi bir niyetiniz var olabilir, bilemiyorum, ama bu biraz basit kalır. Bir diğer mesele ise, olmayacak işe bakalım. Eğer bu koda aynı rakamı belli defa girersek, kod acayip enteresan bir hale gelmezmi? Şöyle ki, her defasında -5, -5 derken, kactahmin değeri, -MAXINT olacak, ardından 0 ve "0 tahminde bildin" gibi abes bir durum ortaya çıkacak. Programcı, bu gibi durumları gören ve göz önüne alan kimsedir. Daha başka bir mesele ise şu. O main() fonksiyonu için demişsiniz ki: int main(); Bu durumda bu fonksiyonun geriye bir değer döndürmesi gerekiyor. Ne değeri, ne olacak filan demeyin, derleyiciyi kızdırmamak, kafasını karıştırmamak, onu mutlu etmek gerekir. Derleyicinin mutluluğu ile programcının mutluluğu arasında kesin bir parallellik olacaktır her daim. Bu gibi hususları görmeyi öğrenmeye çalışın, her durumu düşünün. Derleyiciyi mutlu etmeyi öğrenin. Bir kaç iyi kaide vardır bizim meslekte: KISS, "Keep compiler happy" gibi.. |
peki teşekkür ederim :) |
1. sayfa
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int tutulansayi=0;
int saniyeler=0;
int tahmin=0;
int kactahmin=0;
int puan=50;
//sayi tut
saniyeler=time(NULL);
srand(saniyeler);
tutulansayi=(rand()%100)+1;
printf("1 ile 100 arasinda rasgele bir sayi tuttum!\nkolaysa tahmin et\nsana bazi ipuclari verecegim");
while(tahmin!=-1)
tekrar:
printf("\ntahminin(1-100:");
scanf("%d",&tahmin);
if(tahmin<1 || tahmin>100)
{
printf("hile yapma 1 ile 100 arasi sayi gir");
goto tekrar;
}
kactahmin++;
if(tahmin==tutulansayi){//bildi
printf("tebrikler toplam %d seferde bildin!\n",kactahmin);
break;
}
else{
if(tahmin>tutulansayi){
printf("daha kucuk sayi girmelisin!\n");
puan-=5;
}
else{
printf("daha buyuk bir sayi girmelisin\n");
puan-=5;
}
}
}
bilemedin; printf("bilemediniz puaniniz sifir oldu sayi %d idi",srand(saniyeler);
printf("puanin 50 uzerinden %d!",puan<0?*:puan);
tekrar2:
getch();
}
arkdaşlar dev c ile derledğimde abuk subuk bi hara veriyo berak not loob felan diyo anlayamadım:)
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.