c saymak için bir dizi, bir dizi değeri ekleme soru ++

oy
0

İşte durum:

Kullanıcı istedikleri yüzleri bir dizi [1-12] ile masaya 4 dices kadar seçebilir (Evet, 1 yüz zar burada ŞEY olduğunu). Sonra program tüm sonuç olanaklarını hesaplar.

Örneğin: 2 yüzlerle 2 6 yüzlerle 1 2 zarla,.

Çıktı:

2 = 1 toplamı

3 = 2 toplamı

4 = 2 toplamı

5 = 2 toplamı

6 = 2 toplamı

7 = 2 toplamı

8 = 1 toplamı

Hiçbir farklı olan olasılıkların hepsi ile hesaplamak için desen dışarı bulduk. dices ve sahip oldukları yüzlerinden, burada açıklama verilmiştir:

sırasıyla yüzleri [6, 2, 3, 4] 4 zarla

desen kontrol etmek için buraya tıklayın

Mavi alan 6 yüzleri Yeşil alana sahip bir zar 2 kez Sarı alana sahip 6 yüzleri 3 kez Oku alanı ile yeşil alan döngü olduğunu 4 kez sarı alan döngü

sayılar kenara her toplamının görünüm sayımı ve olursa olsun girişler ne her zaman doğru.

Her yeni alan id başlayacak edilecek [5] ve her yineleme sonrası süreç alanı sonuna e kadar [i + 1] boşluk kayacak.

Ancak, ben programa c ++ içine bu desen uygulamak için doğru yol bulamıyorum hala birçok kez teşebbüs ve ettik.

Benim kodları şu şekildedir:

// Calculate the first iteration of dices

for (int k = 0; k < faces[2]; k++) {
        for (int j = num + k; j < (num + faces[1] + k); j++) {
            tempCount[j]++;
        }
    }

    // Copy results into counter1[]

    for (int i = num; i <= faceCounter; i++) {
        counter1[i] += tempCount[i];
    }

    // Find out the remaining dices

    for (int i = 2; i < num; i++) {
        for (int k = 0; k < faces[i+1]; k++) {                          // Calculate the count range
            for (int j = num + k + 1; j < (num + faces[i] + k); j++) {  // Add the previous counter's value into temp counter
                tempCount[j] += counter1[i];
            }
            if (k == faces[i + 1] - 1)                                  // Make sure finished the for loop first then to final addition, won't duplicate data
                finished = 1;
        }

        //Load results back to counter, which will using it back in loop for further counting

        for (int i = num; (i <= faceCounter) && (finished = 1); i++) {
            counter1[i] += tempCount[i];
        }

        finished = 0;
    }

Gerçi çalışmıyor.

Bunu nasıl değiştirebilirim?

Oluştur 24/10/2019 saat 12:54
kaynak kullanıcı
Diğer dillerde...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more