C Birden çok değerin doğrulamasını yapma

342746

Kilopat
Katılım
2 Haziran 2020
Mesajlar
5.441
Makaleler
10
Çözümler
84
Mesela şöyle bir Sayısal Loto örneği yaptım. Her seferinde rastgele sayı üretiyor. Fakat ben burada rastgele üretilen sayıları bir değerde doğrulamasını yapmak istiyorum. Mesela rastgele üretilen sayılar "11 38 23 14 33 12" eşit olduğunda "Tebrikler Loto'yu kazandınız gibi bir çıktı alabilir miyim? Biraz uğraştım da çözemedim.

C:
#include <stdlib.h>
#include <stdio.h>

int main()
{

    int rastgeleSayi;
    srand(time(NULL));
    int loto[49] = {0};

    printf("Sayiler uretiliyor...\n");

    for (int i = 0; i < 6; i++)
    {
        rastgeleSayi = 1 + rand() % 49;

        while (loto[rastgeleSayi - 1] == 1)
        {
            rastgeleSayi = 1 + rand() % 49;
        }
        loto[rastgeleSayi - 1] = 1;
        printf("%d ", rastgeleSayi);
    }

    printf("\nSayisal Loto tamamlandi.\n");

    system("pause");
    return 0;
}
 
if( sayi1 ==38 && sayi2 == 23.....) diye her sayı için bir karşılaştırma olabilir. Veya daha güzeli
for(int i =0; i<6; i++) iken if(rasgeleSayiX == lotoDegerX ) şeklinde bir karşılaştırmadır.
Bunun için tabii ki rasgele sayıları da çıkmasını istediğin loto değerlerini de birer dizi içinde
toplayacaksın. X koyduğum yerleri [ i ] olarak algıla.
 
Şöyle bir şey deniyorum ama "dogrulama"'ya atadığım değeri kabul etmiyor.
C:
#include <stdlib.h>
#include <stdio.h>

int main()
{

    int rastgeleSayi;
    int dogrulama=11 38 23 14 33 12;
    srand(time(NULL));
    int loto[49] = {0};

    printf("Sayiler uretiliyor...\n");

    for (int i = 0; i < 6; i++)
    {
        rastgeleSayi = 1 + rand() % 49;

        while (loto[rastgeleSayi - 1] == 1)
        {
            rastgeleSayi = 1 + rand() % 49;
        }
        loto[rastgeleSayi - 1] = 1;
        printf("%d ", rastgeleSayi);
    }

if(loto[rastgeleSayi]==dogrulama){
    printf("Tebrikler lotoyu kazandınız");
}


    printf("\nSayisal Loto tamamlandi.\n");

    system("pause");
    return 0;
}
if( sayi1 ==38 && sayi2 == 23.....) diye her sayı için bir karşılaştırma olabilir. Veya daha güzeli
for(int i =0; i<6; i++) iken if(rasgeleSayiX == lotoDegerX ) şeklinde bir karşılaştırmadır.
Bunun için tabii ki rasgele sayıları da çıkmasını istediğin loto değerlerini de birer dizi içinde
toplayacaksın. X koyduğum yerleri [ i ] olarak algıla.
@Dragonlordturkiye Hocam cidden 2 saat oldu hala çözemedim. rastgelesayi ve loto için i değeri alamadım.
 
Son düzenleme:
Yapmak istediğiniz sanırım aşağıdaki gibi bir şey.
C:
#include <stdlib.h>
#include <stdio.h>

int main()
{

    int rastgeleSayi;
    srand(time(NULL));
    int dogrulama[6] = {11, 38, 23, 14, 33, 12};
    int loto[49] = {0};
    int sayac = 0;
    
    printf("Sayiler uretiliyor...\n");

    for (int i = 0; i < 6; i++)
    {
        rastgeleSayi = 1 + rand() % 49;

        while (loto[rastgeleSayi - 1] == 1)
        {
            rastgeleSayi = 1 + rand() % 49;
        }
        loto[rastgeleSayi - 1] = 1;
        printf("%d ", rastgeleSayi);
        
        for (int j = 0; j < 6; j++){
            if(dogrulama[j] == rastgeleSayi)
                sayac++;
        }
    }
    
    printf("\n%d bildiniz\n", sayac);
    
    if(sayac == 6){
        printf("\nKazandınız.\n");
    }
    

    printf("\nSayisal Loto tamamlandi.\n");
    

    
    system("pause");
    return 0;
}
 
Yapmak istediğiniz sanırım aşağıdaki gibi bir şey.
C:
#include <stdlib.h>
#include <stdio.h>

int main()
{

    int rastgeleSayi;
    srand(time(NULL));
    int dogrulama[6] = {11, 38, 23, 14, 33, 12};
    int loto[49] = {0};
    int sayac = 0;

    printf("Sayiler uretiliyor...\n");

    for (int i = 0; i < 6; i++)
    {
        rastgeleSayi = 1 + rand() % 49;

        while (loto[rastgeleSayi - 1] == 1)
        {
            rastgeleSayi = 1 + rand() % 49;
        }
        loto[rastgeleSayi - 1] = 1;
        printf("%d ", rastgeleSayi);
   
        for (int j = 0; j < 6; j++){
            if(dogrulama[j] == rastgeleSayi)
                sayac++;
        }
    }

    printf("\n%d bildiniz\n", sayac);

    if(sayac == 6){
        printf("\nKazandınız.\n");
    }


    printf("\nSayisal Loto tamamlandi.\n");



    system("pause");
    return 0;
}
Hocam buna benzer bir şey yaptım ama olumlu bir sonuç alamadım. Çalışıyor ama sırası ile değil. Mesela 1,2,3 olsun loto, program 2,1,3 olunca da kabul ediyor.
 
Sorun tam olarak ne? Ayrıca loto dizisinin boyutunu 6 yaparak ve rastgele ürettiğin sayıları loto dizisine atarak hem sayıları elde tutmuş olursun hem de bellekte daha az yer kaplamış olursun.
 
Sorun tam olarak ne? Ayrıca loto dizisinin boyutunu 6 yaparak ve rastgele ürettiğin sayıları loto dizisine atarak hem sayıları elde tutmuş olursun hem de bellekte daha az yer kaplamış olursun.
Boyutu rastgele atadım. İstediğim rastgele üretilen sayılar bizim belirlediğimiz değere eşit olunca bir çıktı almak. Yukarıdaki arkadaş yapmış ama sırası ile değil.
 

Geri
Yukarı