برنامه ای به زبان ++C بنویسید که پرتاپ دو تاس را شبیه ساری کند. این برنامه باید برای انداختن این تاس ارز rand و برای پرتاپ دومین تاس نیز باز هم از rand استفاده کند. و مجموع این دو مقدار را محاسبه کند. توجه: چون هر یک از تاس ها مقدار صحیح بین اعداد 1 تا 6 را نمایش می دهد. در نتیجه مجموع این دو مقدار بین 2 تا 12 است که مجموع 2 تا 12 کمترین دفعات و مجموع 7 بیشترین دفعات می باشند.
7 6 5 4 3 2
8 7 6 5 4 3
9 8 7 6 5 4
10 9 8 7 6 5
11 10 9 8 7 6
12 11 10 9 8 7
شکل بالا 36 ترکیب ممکن برای تاس ها را نشان می دهد. برنامه ی شما باید 36000 بار دو تاس را پرتاپ کند. تعداد دفعاتی را که هر یک از مجموعه های ممکن پیش می اید را با استفاده از یک ارایه یک بعدی دخیره و نتایج را به شکل جدولی نمایش دهید. سپس بررسی کنید که ایا تعداد مجموعه های بست امده معقول هست یا نه (مثلا به 6 طریق, مجموع عدد 7 حاصل می شود پس تقریبا حدود یک ششم همه ی پرتاپ ها باید عدد 7 باشد.)
کد چه مشکلی داره که اجرا نمیشه؟
#include<iostream>
#include<conio.h>
#include<iomanip>
using namespace std;
int main()
{
const long ROLLS = 36000;
const int SIZE = 13;
// array exepected contains counts for the expected
// number of the times each sum occurs in 36 rolls of the dics
int expected[SIZE] = { 0, 0, 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1 };
int x, y, sum[SIZE] = {0};
srand(time(0));
for(long i = 1; i <= ROLLS; ++i) {
x = 1 + rand() % 6;
y = 1 + rand() % 6;
++sum[x + y];
}
cout << setw(10) << "Sum" << setw(10) << "Total" << setw(10)
<< "Expected" << setw(10) << "Actual\n"
<< setiosflags(ios::fixed | ios::showpoint);
for(int j = 2; j < SIZE; ++j)
cout << setw(10) << j << setw(10) << sum[j] << setprecision(3)
<< setw(9) << 100.0 * expected[j] / 36 << "%" << setprecision(3)
<< setw(9) << 100.0 * sum[j] / 36000 << "%\n";
getch();
return 0;
}