2 zar atışının yapıldığını C dili ile yazma

Wollep

Centipat
Katılım
8 Mayıs 2020
Mesajlar
45
Başlıkta da belirttiğim gibi aynı anda 100 defa atılan 2 zarın, aynı sayılar geldiği atışlar ve gelen sayıları ekrana yazdıran programın kodlarını C dilinde nasıl yazarız?
 
1) C dilinde iki sayi ayni ise ekrana yazdiran kod nasil yazilir?
2) C dilinde random sayi nasil uretilir?
3) C dilinde bir fonksiyon 100 defa nasil tekrarlanir?

1,2 ve 3 un birlesimi. 3' u de basit.
 
Bu program da tek zar mı 100 kere atılıyor onu anlayamadım. Soru da 2 zarı yüz kere atmak deniliyor ya biraz kafam karıştı.
 
Bu program da tek zar mı 100 kere atılıyor onu anlayamadım. Soru da 2 zarı yüz kere atmak deniliyor ya biraz kafam karıştı.
Bu sadece bir örnek deneme yanılma yolu ile, kodu okuyarak, anlamaya çalışarak ne olduğunu çözebilirsin. Bizim sana burada kodu direkt vermemiz ne sana ne de başkasına bir şey kazandırır.
 
Kodu çözdüm. 1 zar 100 kere atılıyor. 1-6 arası rastgele rakamları önüme getiriyor. 2 zarı aynı anda 100 kere atmayı nasıl yapacağım? Öğreterek söyleyebilir misin? :)
 
For döngüsü kullanman gerek.

Yani bir sayımız olsun değeri sıfıra eşit. Bu sayı 100 den küçükse döngüyü tekrarla gibi. Her döngü tekrar edilişinde sayı 1 artacak ve 100 kere random atamış olucaksın.
 
Kodu çözdüm. 1 zar 100 kere atılıyor. 1-6 arası rastgele rakamları önüme getiriyor. 2 zarı aynı anda 100 kere atmayı nasıl yapacağım? Öğreterek söyleyebilir misin? :)
Öncelikle #include <time.h> diyerek UNIX zaman kütüphanesini çağırın. Her saniye arttığında farklı sayı üretmesi için kullanacağız. Öbür türlü bir defa ürettiği sayıyı hep kullanıyor.

Daha sonra srand(time(NULL)); diyoruz ve her UNIX saatimiz bir arttığında, yani her saniyede farklı bir rastgele sayı üretiyor.

Daha sonra, zar atma formülü olarak 1+(rand()%6); kullanıyorum. Deitel'da bunu kullanıyor. 1-6 arası sayılarda rastgele bir sayı oluşturuyor. Bunu bir değişkene kaydet. (Örneğin zar1) Ayrıca bunu döngü içinde tekrarlatıp başka rastgele sayılar oluşturmasını sağlayın. Örneğin for döngüsünde i değişknini sayaç olarak kullanabilirsiniz ve bu döngü içerisinde rastgele sayı üretebilirsiniz.

Örnek (10 defa atış yapan program):
C:
#include <stdio.h>
#include <time.h> //Zaman kütüphanesi, UNIX zamanını bize verir.
#include <stdlib.h>

int main(){
    srand(time(NULL));
    int zar1, zar2;
    for(int i = 0; i < 10; i++){
       
        zar1 = 1+(rand()%6);
        zar2 = 1+(rand()%6);
        printf("Zar1 : %d ve Zar2 : %d \n",zar1,zar2);
    }
       
   
   
    return 0;
}
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main(){
int a,b=0;
int s1,s2;
srand(time(NULL));
for(a=0;a<100;a++){
s1=rand()&5+1;
s2=rand()&5+1;
if(s1==s2){
b++;
printf("%d. atis cift geldi. %d-%d\n",a,s1,s2);
}
}
printf("\nToplam %d atis cift geldi",b);
}

^ Bu şekil yaptım ama 0 geliyor bazen. Onu nasıl düzeltebilirim ?
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı