c++ sayı tahmin oyunu

trainee

Üye
Katılım
6 Ara 2009
Mesajlar
4
Puanları
1
Yaş
32
merhabalar sorum şu olucak. bilg 4 basamaklı sayıyı hafızasından tutucak ve biz bunu bulmaya çalışcaz. Şartları ise şu şekilde. Diyelimki bilg 4578 sayısını tuttu. Eğer kullanıcı 3569 gırerse 5 ler aynı basamakta oldugu için +, eğer kullanıcı 2789 gırerse bilgisayarın tuttugu sayıda da 7 ve 8 oldugu için -,eğer tahmin hiç uyuşmazsa 0 konulcak ve sayı bilindiğinde ++++ çıktısını verecek. yardımcı olursanız sevinirim. Çok önemli:/
 
Sn. trainee,

Bilgisayarımda C++ yüklü olmadığı için compile edemiyorum ama size mantığını söylersem yaparsınız diye tahmin ediyorum.

Rand fonksiyonu ile oluşturulan sayı "k" olsun. 4 basamaklı olduğunu bildiğimiz için, binler basamağını elde etmek için k/1000 yaparız ve değerini de "a"ya atarız. (Tabii yazacağımız değişkenlerin hepsi integer tanımlanmalı..) Daha sonra yüzler basamağını elde etmek için, k/100 yazıp mod10'a göre olan değerini hesaplarız ve "b"ye atarız. Bundan sonra aynısını onlar basamağı için, k/10 yazıp tekrar mod10'a göre olan değerini hesaplarız ve "c"ye atarız. Son olarak da birler basamağı için, d=k-(1000*a+100*b+10*c) olarak yaptıktan sonra bütün basamakları teker teker elde etmiş oluruz. Girilecek sayıyı da aynı yöntemle e,f,g,h şeklinde değişkenlere atarsanız, daha sonra çok basit "if-else" yapılarını düzenlemek kalır. O kadarını yaparsınız diye tahmin ediyorum.

Farklı bir yöntemle de yapılabilir belki ama benim ilk aklıma gelen bu oldu.
 
İlgin için çok teşekkür ederim. Ama şöyle bişey var ben php gördüm,c++ ıkıncı donem görcez hoca bunu hazırlık odevı olarak verdi. Yanı kodların yazımıyla da pek bişey bilmiyorum. Sorunum şu anlıcagın mantığını kestiriyorum,ama c++ dökemedim
 
Sn. trainee,

Bilgisayarımda yüklü compiler olmadığı için size buradan yazmamın pek fazla doğru olmadığını düşünüyorum.

Aynı zamanda bu basit ve temel bir uygulamadır. Biraz araştırırsanız rahatlıkla yapabileceğiniz bir uygulamadır. Buraya compiler'a gerek kalmadan da yazılabilinir belki ancak cplusplus.com - The C++ Resources Network adresine girerseniz bir sürü kaynak ve örnek bulabilirisiniz.

Şunu da unutmayınız. Forumumuzdaki üyeler, gerçekten yardım gereken durumlarda herşeyi bırakıp yardım ederler. İlk üye olduğum zamanlarda bizzat örneği yaşadım. Ama bana hep yol gösterildi, ben araştırdım öğrendim. Bundan dolayı direkt olarak bir ödev çözümü burada verilemez. Bunun nedeni ise size faydasının dokunmayacağı, tam aksine zararı olacağıdır.

İnternette araştırıp da tekrar yapamazsanız, daha açıklayıcı bir yolla elimden geldiği kadar, seve seve yardımcı olurum.

Saygılarımla,
 
Kusura bakmayın cevap geç oldu ama anca girebildim. Ben c gördüğüm için internettende bakınarak bıseyler yaptım,ama c++ çevıremedım bu konuda yardımcı olabilirmisiniz
 
Sn. trainee,

Yazdığınız kodu paylaşırsanız elimden geldiği kadar yardımcı olmaya çalışırım.
 
Teşekkür ederim,ilginiz için. Kod şu şekilde:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

int sayi[4];
int sayiDeger;
int tahminOku();
void sayiBelirle();

int main() {
int denemeSayisi;
int geciciOkunan;

denemeSayisi = 0;
sayiBelirle();


while (++denemeSayisi < 10) {
geciciOkunan = tahminOku();
if (geciciOkunan==sayiDeger) {
printf("Tebrikler, sayıyı bildiniz!\n\n");
return 0;
}
}
printf("Oyunu kaybettiniz, Sayı : %d\n", sayiDeger);
return 1;
}

int tahminOku() {
int okunanSayi, okunanTemp, okunanSayiParcalar[4], i, j, arti, eksi;

printf("Tahmin Giriniz : ");
scanf("%d", &okunanSayi);

okunanTemp = okunanSayi;
for (i=3;i>=0;i--) {
okunanSayiParcalar = okunanTemp % 10;
okunanTemp -= okunanSayiParcalar;
okunanTemp = okunanTemp / 10;
}

arti = 0;
eksi = 0;

for (i=0;i<4;i++) {
if (okunanSayiParcalar==sayi)
arti++;
else
for (j=0;j<4;j++)
if (j!=i && okunanSayiParcalar==sayi[j]) eksi++;
}

printf("Sonuç : +%d,-%d\n", arti, eksi);

return okunanSayi;
}

void sayiBelirle() {
int i, j, x;
// # Rastgele sayı üreticiye malzeme
srand(time(NULL));
sayi[0] = rand() % 8 + 1;
for (i=1;i<4;i++) {

x = 0;
while (x==0) {
x = 1;
sayi = rand() % 9;
for (j=0;j<i;j++) {
if (sayi==sayi[j]) x = 0;
}
}
}
sayiDeger = sayi[0]*1000 + sayi[1]*100 + sayi[2]*10 + sayi[3];
}
 

Forum istatistikleri

Konular
128,184
Mesajlar
915,686
Kullanıcılar
449,954
Son üye
yulaf177

Yeni konular

Geri
Üst