Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Vasyok_Vasyok
0 / 0 / 0
Регистрация: 13.09.2015
Сообщений: 21
1

Массив: Напишите программу, которая моделирует бросание двух игральных костей

08.01.2016, 14:29. Просмотров 766. Ответов 3
Метки с++ (Все метки)

Напишите программу, которая моделирует бросание двух игральных костей. Программа должна вызывать функцию rand для бросания первой кости и затем эту же функцию для бросания второй. Затем должна быть вычислена сумма этих значений. Замечание: поскольку на каждой кости может выпадать значение от 1 до 6, то сумма двух значений изменяется в диапазоне от 2 до 12, при этом 7 будет выпадать наиболее часто, а 2 и 12 – наименее. На рисунке показаны 36 возможных комбинаций для двух костей. Ваша программа должна бросать кости 36 000 раз. Используйте одномерный массив для подсчёта числа появлений каждой из возможных сумм. Выведите результаты в табличной форме в частотах появления сумм и в процентах.

вот, что у меня есть:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <ctime>
#include <cstdlib>
 
using namespace std;
 
void Throw_Dice (int k1, int k2, int *a, int n)
{
    int sum=0;
    k1=1+rand()%6;
    k2=1+rand()%6;
    sum=k1+k2;
    cout<<sum<<endl;
}
 
int main()
{
    int K1, K2, x=0;
    int N=36000;
    int a[N];
    srand (time(NULL));
    while (x!=36000)
    {
      Throw_Dice(K1,K2,a,N);
    }
    return 0;
}
По поводу массива. Заводим массив, в первом элементе которого (индекс 0) хранится кол-во появлений суммы 2, во втором (индекс 1) - суммы 3 и т.д.
Результат можно в таком виде - таблица из строк:
_сумма_ _кол-во_появлений_ _кол-во_появлений_в_%_
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2016, 14:29
Ответы с готовыми решениями:

Программа, которая моделирует бросание двух игральных костей
Напишите программу, которая моделирует бросание двух игральных костей. Программа должна вызывать...

Бросание двух игральных костей
Написать программу на C, которая моделирует бросание двух игральных костей. Программа должна...

Бросание двух костей.
Помогите решить задачу про бросание костей: Программа должна использовать rand для бросание 1 и...

Напишите программу, которая моделирует подбрасывание монеты
Напишите программу, которая моделирует подбрасывание монеты. Для каждого подбра-сывания монеты...

Смоделировать бросание каждым из двух игроков трех игральных кубиков
Смоделировать бросание каждым из двух игроков трех игральных кубиков.Определить ,кто из игроков...

3
Apostol584
243 / 149 / 118
Регистрация: 26.11.2012
Сообщений: 375
Завершенные тесты: 2
08.01.2016, 14:57 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include<iomanip>
#include <ctime>
 
 
int Throw_Dice()
{
    int sum = 0;
    int k1 = 1 + rand() % 6;
    int k2 = 1 + rand() % 6;
    sum = k1 + k2;
    return sum;
}
 
int main()
{
    setlocale(LC_ALL, "rus");
    const int N = 36000;
    int a[11] = { 0 };
    srand(time(NULL));
    for (int i = 0; i < N; i++)
        a[Throw_Dice() - 2]++;
    std::cout << "сумма|кол-во появлений|кол-во появлений в % \n";
    for (int i = 0; i < 11; i++)
        std::cout << std::setw(5) << std::left << i + 2 << '|' << std::setw(16) << std::left << a[i] << '|' << a[i] / (N / 100.0) << std::endl;
    system("pause");
    return 0;
}
0
demes
8 / 8 / 1
Регистрация: 06.04.2014
Сообщений: 24
08.01.2016, 15:02 3
А в чем проблема? Если хотите, чтобы просто написали за Вас, то это не сюда. Только вот научиться программировать тогда не получится.
У Вас видимо циклится
C
1
2
3
4
while (x!=36000)
    {
      Throw_Dice(K1,K2,a,N);
    }
хорошо бы изменят x в теле цикла + если количество итераций заранее известно, то лучше использовать for
получаем:
C
1
2
3
4
5
while (x!=36000)
    {
      Throw_Dice(K1,K2,a,N);
      x= x+1;
    }
Зачем в функции Throw_Dice(K1,K2,a,N); нужны параметры a и N?
Сделайте
C
1
int Throw_Dice(K1,K2);
и возвращайте значение вычисления, а в цикле его фиксируйте, т.е.
C
1
2
3
4
5
6
7
8
9
int tempValue = 0;
int a[11]; // всего вариантов исходов
...
while (x!=36000)
    {
       tempValue = Throw_Dice(K1,K2);
       a[tempValue-2] = a[tempValue-2] + 1; // увеличиваем элемент массива, соответствующий результату (2 ->0..)
      x= x+1;
    }
0
Vasyok_Vasyok
0 / 0 / 0
Регистрация: 13.09.2015
Сообщений: 21
08.01.2016, 15:20  [ТС] 4
Добавлено через 4 минуты
demes, спасибо
0
08.01.2016, 15:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2016, 15:20

Расстановка игральных костей
Программа играющая в игру «Расстановка игральных костей». Задана частичная двумерная сетка. В...

Написать программу на С++, которая моделирует АЦП
Нужно Написать программу на С++, которая моделирует АЦП с разрядностью т=4,8,16,24 бит. Блок АЦП...

Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков
Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков (допускаются...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru