Doğru Sayıyı Bulana Kadar Nasıl Tekrar Ettirilir? (C)
-
hocalar diyelimki bir sayı seçtik,kullanıcı o sayıyı girene kadar soruyu tekrarlatıcaz,aklıma gelen şey sanırım kullanılan method değil..Genelde bu tür döngülerde nasıl bi algoritma kullanılır?
bi bakın bakalım;
#include
int tbt (int secenek)
{
printf("1 2 3 4 arasında bir sayı sec? \n");
scanf("%d",&secenek);
if (secenek==1 || secenek==2|| secenek==3)
{
printf("Yanlis tahmin.Tekrar dene.\n");
tbt(secenek);
}
if (secenek==4)
{
printf("doğru tahmiiiinnnn!!!");
}
return 0;
}
int main(void)
{
int secenek;
tbt(secenek);
return 0;
} -
while ( secilenSayi != girilenSayi ) {
.
.
işlemlerin
.
.
}
edit:
// pc nin seçtiği sayının 4 olduğu farzedilerek yazılmış program
#include <stdio.h>
#include <conio.h>
int main(){
int tah=4, gir;
do{
printf("1 ile 4 arasında bir sayı giriniz \n");
scanf("%d",&gir);
if(tah==gir){
printf("tebrikler \n");
}
else{
printf("Yanlış Tahmin \n");
}
}while(gir!=tah);
getch();
return 0;
}
-
#include <stdio.h> int tbt (int secenek) { tekrardene: // yanlış seçtikçe burdan başlar printf("1 2 3 4 arasında bir sayı sec \n"); scanf("%d",&secenek); if (secenek==1 || secenek==2|| secenek==3) { printf("Yanlis tahmin.Tekrar dene.\n"); goto tekrardene; // eğer yanlış olursa yukarıdaki tekrardene: ye gidiyor program } if (secenek==4) { printf("doğru tahmiiiinnnn!!!"); } return 0; } int main(void) { int secenek; tbt(secenek); return 0; }
-
manyaki bunu yazdı:
-----------------------------while ( secilenSayi != girilenSayi ) {
.
.
işlemlerin
.
.
}
edit:
// pc nin seçtiği sayının 4 olduğu farzedilerek yazılmış program
#include
#include
int main(){
int tah=4, gir;
do{
printf("1 ile 4 arasında bir sayı giriniz \n");
scanf("%d",&gir);
if(tah==gir){
printf("tebrikler \n");
}
else{
printf("Yanlış Tahmin \n");
}
}while(gir!=tah);
getch();
return 0;
}
-----------------------------#include
#include
bunların devamı gözükmüyor hocam? stdio.h ile hangi libraryi kullandın?
birde while içinde kullandıgın getch'in işlevi nedir?
-
DeaD_BY bunu yazdı:
----------------------------#include
#include
bunların devamı gözükmüyor hocam? stdio.h ile hangi libraryi kullandın?
birde while içinde kullandıgın getch'in işlevi nedir?
-----------------------------stdio.h ve conio.h
getch(); aslında programı yanıltıcı bişey hocam. conio.h kütüphanesine bağlı olarak çalışıyor. Scanf gibi tek bir karakter almanı sağlar. örneğin char a; olarak tanımladığın bir değişken için a=getch(); şeklinde yazarsan girilen ilk tuş enter a basılmadan a değişkenine aktarılır. Burda benim yazmamın amacı Dev C++ ın kapanmasını engellemek, herhangi bir tuşa basılana kadar açık kalmasını sağlamak. SystemPause ile aynı işlevi görüyor yani.
-
OnLyGoDCaNStoPMe bunu yazdı:
-----------------------------#include int tbt (int secenek) { tekrardene: // yanlış seçtikçe burdan başlar printf("1 2 3 4 arasında bir sayı sec \n"); scanf("%d",&secenek); if (secenek==1 || secenek==2|| secenek==3) { printf("Yanlis tahmin.Tekrar dene.\n"); goto tekrardene; // eğer yanlış olursa yukarıdaki tekrardene: ye gidiyor program } if (secenek==4) { printf("doğru tahmiiiinnnn!!!"); } return 0; } int main(void) { int secenek; tbt(secenek); return 0; }
-----------------------------hocam işte tam merak ettiğim yerde burasıydı.saolasın.
-
DeaD_BY bunu yazdı:
-----------------------------OnLyGoDCaNStoPMe bunu yazdı:
-----------------------------#include int tbt (int secenek) { tekrardene: // yanlış seçtikçe burdan başlar printf("1 2 3 4 arasında bir sayı sec \n"); scanf("%d",&secenek); if (secenek==1 || secenek==2|| secenek==3) { printf("Yanlis tahmin.Tekrar dene.\n"); goto tekrardene; // eğer yanlış olursa yukarıdaki tekrardene: ye gidiyor program } if (secenek==4) { printf("doğru tahmiiiinnnn!!!"); } return 0; } int main(void) { int secenek; tbt(secenek); return 0; }
-----------------------------Hocam goto kullanmamanı öneririm. C'nin trace yapısına çok aykırı bir kod şekli.
edit: goto için birçok kaynak, "ya hiç kullanmayın ya da olabildiğince az kullanın" demektedir.
----------------------------- -
:/ hmm onu bilmiyordum üzüldüm şimdi goto yu çok severdim ve hep kullanırım ne gibi problemler oluşturur ?
-
manyaki bunu yazdı:
-----------------------------DeaD_BY bunu yazdı:
----------------------------#include
#include
bunların devamı gözükmüyor hocam? stdio.h ile hangi libraryi kullandın?
birde while içinde kullandıgın getch'in işlevi nedir?
-----------------------------stdio.h ve conio.h
getch(); aslında programı yanıltıcı bişey hocam. conio.h kütüphanesine bağlı olarak çalışıyor. Scanf gibi tek bir karakter almanı sağlar. örneğin char a; olarak tanımladığın bir değişken için a=getch(); şeklinde yazarsan girilen ilk tuş enter a basılmadan a değişkenine aktarılır. Burda benim yazmamın amacı Dev C++ ın kapanmasını engellemek, herhangi bir tuşa basılana kadar açık kalmasını sağlamak. SystemPause ile aynı işlevi görüyor yani.
-----------------------------hocam terminalde şu hatayı aldım,nedir anlamı;
cahit.c:3:19: fatal error: conio.h: No such file or directory
compilation terminated.____
(Hocam goto kullanmamanı öneririm. C'nin trace yapısına çok aykırı bir kod şekli.)
hocam trance yapısı dediğin nedir?biraz daha detaysal açıklarmısın :)
-
OnLyGoDCaNStoPMe bunu yazdı:
-----------------------------:/ hmm onu bilmiyordum üzüldüm şimdi goto yu çok severdim ve hep kullanırım ne gibi problemler oluşturur ?
----------------------------ilk öğrendiğimde ben de çok üzülmüştüm :) Aslına bakarsan kod olarak herhangi bir yanlış yanı yok sonuçta C'ye dahil bir kod fakat dediğim gibi çok tavsiye edilmiyor. Şöyle ki goto'nun kullanımı daha kapsamlı projelerde anlaşılması zor ve bakımı yapılması olanaksız programlar yaratabilir. Çünkü compiler yazılan kodu trace ederken yukarıdan aşağıya doğru okur ve goto yapısı buna mantık olarak ters.
-
anladım hocam teşekkürler aydınlattığın için