1. sayfa (Toplam 1 sayfa)

C Programlama ile Sayı Tahmini Yapalım - Sıcak/Soğuk Oyunu

Gönderilme zamanı: 09 Tem 2023 00:52
gönderen admin
C Programlama ile sayı tahmini nasıl yapılır ? Sıcak-Soğuk Oyunu yapalım.

Kod: Tümünü seç

#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
main()
{
srand(time(NULL));
int hak=5, t;
int rs = rand()%10;
printf("Rastgele Sayi : %d \n ",rs);
while(hak>0)
{
printf("Tahmin : "); scanf("%d",&t);
hak--;
if(rs==t)
{
printf("Tebrikler :) \n");
break;
}
else if(abs(t-rs)<=2)
{
printf("Cok Sicak \n Kalan Hakkiniz : %d \n",hak);
}
else if(abs(t-rs)<=4)
{
printf("Ilik \n Kalan Hakkiniz : %d \n",hak);
}
else if(abs(t-rs)<=6)
{
printf("Soguk \n Kalan Hakkiniz : %d \n",hak);
}
else
{
printf("Cok Soguk \n Kalan Hakkiniz : %d \n",hak);
}
}
printf("Rastgele Sayi : %d \n ",rs);
getch();
}
Ekran çıktısı :

Resim

Re: C Programlama ile Sayı Tahmini Yapalım - Sıcak/Soğuk Oyunu

Gönderilme zamanı: 09 Tem 2023 06:31
gönderen admin
do-while döngüsü ile Sayı tahmini nasıl yapılır ?

Kod: Tümünü seç

#include <stdio.h>
#include <time.h> 
#include <stdlib.h>
 
main(){
    int sayi, deneme=0;
    srand (time(NULL));
    int rastgele = rand() % 100;
    //printf("Atanan  sayi : %d\n", rastgele); 
    
    do{
        printf("Bir sayi giriniz : ");
        scanf("%d", &sayi);
        
        if(sayi < rastgele){
            printf("Sayiyi buyultun.\n");
        }
        else if(sayi > rastgele){
            printf("Sayiyi kucultun.\n");
        }
        deneme++;
    }
    while(sayi != rastgele);
    
    printf("\nTebrikler %d. denemede bildiniz!", deneme);
}

Kod: Tümünü seç

//printf("Atanan  sayi : %d\n", rastgele); 
Yukarıdaki kısımda isterseniz bildiri işaretini kaldırıp, hangi sayının rastgele atandığını belirtebilirsiniz.

Önce 0-100 arasında rastgele bir sayı ürettiriyoruz. Daha sonra klavyeden tahmin girişleri alıyoruz ve kullanıcının tahminiyle atanan sayı yani “rastgele” değişkeni aynı oluncaya kadar döngü dönmeye devam ediyor.

“deneme” değişkeniyle ise kullanıcının kaç tane deneme yaptığını buluyoruz.

Ekran çıktısı :

Resim

Re: C Programlama ile Sayı Tahmini Yapalım - Sıcak/Soğuk Oyunu

Gönderilme zamanı: 23 Eyl 2024 21:09
gönderen admin
### Alternatif bir üretim: ###

Kod: Tümünü seç

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

int main() {
    int tahmin, rastgeleSayi;
    
    // Rastgele sayı üretimi için seed ayarlama
    srand(time(NULL));
    rastgeleSayi = rand() % 100 + 1; // 1 ile 100 arasında rastgele bir sayı

    printf("1 ile 100 arasında bir sayı tahmin edin:\n");

    do {
        printf("Tahmininiz: ");
        scanf("%d", &tahmin);

        if (tahmin < rastgeleSayi) {
            printf("Daha yüksek bir sayı tahmin edin.\n");
        } else if (tahmin > rastgeleSayi) {
            printf("Daha düşük bir sayı tahmin edin.\n");
        } else {
            printf("Tebrikler! Doğru tahmin ettiniz: %d\n", rastgeleSayi);
        }
    } while (tahmin != rastgeleSayi); // Kullanıcı doğru tahmin edene kadar döngü devam eder

    return 0;
}
### Açıklama: ###

1. Rastgele Sayı Üretimi:
srand(time(NULL))
ile rastgele sayı üretimi için bir başlangıç değeri ayarlanır.
rand() % 100 + 1
ifadesi, 1 ile 100 arasında bir rastgele sayı üretir.
2. do-while Döngüsü: Kullanıcıdan tahmin alır ve bu tahmini kontrol eder. Kullanıcının tahmini doğru değilse, ona ipuçları verir (daha yüksek veya daha düşük).
3. Döngü Sonu: Kullanıcı doğru tahmin yaptığında döngü sona erer ve tebrik mesajı gösterilir.

Bu basit program,
do-while
döngüsünün nasıl kullanılacağını ve kullanıcı etkileşimi ile bir oyun oluşturmanın temelini göstermektedir.

### Ekran çıktısı: ###
Resim

Re: C Programlama ile Sayı Tahmini Yapalım - Sıcak/Soğuk Oyunu

Gönderilme zamanı: 24 Eyl 2024 15:08
gönderen trasmus
Programı biraz daha karmaşıklaştırmak için rastgele sayı üretim aralığı kullanıcı tarafından belirlenebilir. Örneğin pozitif 1-100 sayı aralığında en az 10 sayı içeren bir değer girilmesi istenebilir. "Tahmin hakkı sınırlaması olsun mu?" diye sorulabilir ve hak sayısı sorulabilir.

Re: C Programlama ile Sayı Tahmini Yapalım - Sıcak/Soğuk Oyunu

Gönderilme zamanı: 13 Eyl 2025 22:28
gönderen admin
trasmus yazdı: 24 Eyl 2024 15:08 Programı biraz daha karmaşıklaştırmak için rastgele sayı üretim aralığı kullanıcı tarafından belirlenebilir. Örneğin pozitif 1-100 sayı aralığında en az 10 sayı içeren bir değer girilmesi istenebilir. "Tahmin hakkı sınırlaması olsun mu?" diye sorulabilir ve hak sayısı sorulabilir.
Chat-gpt'ye aşağıda ki tarzda bir şeyler yazdırdım. Müsait zamanda bende kurcalayacağım.

Kod: Tümünü seç

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

#define MAX_NUM 100
#define MIN_NUM 1

// Fonksiyonlar
int isValidArray(int arr[], int size);
int containsAtLeast10Numbers(int arr[], int size);
int getRandomNumberFromArray(int arr[], int size);
int isClose(int guess, int target);

int main() {
    int arr[MAX_NUM];
    int size;
    int guess;
    int target;
    char choice;
    int maxGuesses = -1; // -1 sınırsız anlamında
    int guessesMade = 0;

    srand(time(NULL));

    printf("Pozitif 1-100 arasi en az 10 sayi iceren bir dizi giriniz.\n");
    printf("Dizi boyutunu giriniz: ");
    scanf("%d", &size);

    if (size < 10 || size > 100) {
        printf("Dizi boyutu en az 10 ve en fazla 100 olmalidir.\n");
        return 1;
    }

    printf("Dizideki sayilari giriniz (1 ile 100 arasinda):\n");
    for (int i = 0; i < size; i++) {
        scanf("%d", &arr[i]);
        if (arr[i] < MIN_NUM || arr[i] > MAX_NUM) {
            printf("Girdiginiz sayi aralik disinda.\n");
            return 1;
        }
    }

    // Dizide en az 10 farklı sayı var mı kontrolü (farklı sayı mı istiyorsan)
    // Burada sadece dizide toplamda 10 sayı olduğundan zaten sağlanmış oluyor.
    // İstersen farklı sayılar kontrolü de ekleyebilirim.

    // Rastgele hedef sayı seç
    target = getRandomNumberFromArray(arr, size);

    printf("Tahmin hakki sinirlamasi istiyor musunuz? (E/h): ");
    scanf(" %c", &choice);

    if (choice == 'E' || choice == 'e') {
        printf("Kac tahmin hakki olsun?: ");
        scanf("%d", &maxGuesses);
        if (maxGuesses < 1) {
            printf("Tahmin hakki 1'den kucuk olamaz.\n");
            return 1;
        }
    }

    printf("Sayi tahmin oyununa basladiniz! 1 ile 100 arasinda sayi tahmin edin.\n");

    while (1) {
        if (maxGuesses != -1 && guessesMade >= maxGuesses) {
            printf("Tahmin hakkiniz bitti. Kaybettiniz. Dogru sayi: %d\n", target);
            break;
        }

        printf("Tahmininiz: ");
        scanf("%d", &guess);

        if (guess < MIN_NUM || guess > MAX_NUM) {
            printf("Tahmin aralik disinda! Tekrar deneyin.\n");
            continue;
        }

        guessesMade++;

        if (guess == target) {
            printf("Tebrikler! Sayiyi dogru tahmin ettiniz: %d\n", target);
            break;
        } else {
            // Sıcak-soğuk geri bildirimi
            if (isClose(guess, target)) {
                printf("Sicak! Yaklasiyorsunuz.\n");
            } else {
                printf("Soguk! Uzaktasiniz.\n");
            }
            if (maxGuesses != -1) {
                printf("Kalan tahmin hakki: %d\n", maxGuesses - guessesMade);
            }
        }
    }

    return 0;
}

// Rastgele diziden bir sayı seçer
int getRandomNumberFromArray(int arr[], int size) {
    int index = rand() % size;
    return arr[index];
}

// Yakınlık kontrolü, fark 10 veya daha azsa "sıcak" kabul edelim
int isClose(int guess, int target) {
    int diff = guess - target;
    if (diff < 0) diff = -diff;
    return diff <= 10;
}
Ekran çıktısı:

Pozitif 1-100 arasi en az 10 sayi iceren bir dizi giriniz.
Dizi boyutunu giriniz: 10
Dizideki sayilari giriniz (1 ile 100 arasinda):
5
55
12
33
66
99
77
62
42
25
Tahmin hakki sinirlamasi istiyor musunuz? (E/h): h
Sayi tahmin oyununa basladiniz! 1 ile 100 arasinda sayi tahmin edin.
Tahmininiz: 1
Sicak! Yaklasiyorsunuz.
Tahmininiz: 2
Sicak! Yaklasiyorsunuz.
Tahmininiz: 5
Tebrikler! Sayiyi dogru tahmin ettiniz: 5


=== Code Execution Successful ===
Oyun akışı şöyle olacak:

1-Kullanıcıdan tahmin edilecek sayı aralığı içinden en az 10 sayı içeren bir dizi girmesi istenecek.

2-Tahmin hakkı sınırlaması istenip istenmediği sorulacak.

3-Ardından kullanıcı sayı tahmini yapacak.

4-"Sıcak" (tahmin doğruya çok yakın) ve "Soğuk" (uzak) geri bildirimleri verilecek.

5-Tahmin hakkı varsa hak bitince oyun bitecek, yoksa doğru tahmine kadar devam edecek.

Dipnot:
Sanırım çipet işi bir tık karmaşıklaştırdı. :evil: