Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
#1

Бросание двух костей. - C++

13.12.2010, 19:08. Просмотров 1296. Ответов 5
Метки нет (Все метки)

Помогите решить задачу про бросание костей:

Программа должна использовать rand для бросание 1 и 2 кости. Затем должна подсчитываться сумма двух значений. Поскольку каждая кость может показывать целое число от 1 до 6, то сумма может варьироваться от 2 до 12 с наиболее частым значением суммы 7 и наименее частыми 2 и 12. Используйте одномерный массив, чтобы подсчитывать, сколько раз выпадет каждая возможная сумма.

Решите пожалуйста, очень надо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2010, 19:08     Бросание двух костей.
Посмотрите здесь:

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

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

Массив: Напишите программу, которая моделирует бросание двух игральных костей - C++
Напишите программу, которая моделирует бросание двух игральных костей. Программа должна вызывать функцию rand для бросания первой кости и...

Смоделировать бросание каждым из двух игроков трех игральных кубиков - C++
Смоделировать бросание каждым из двух игроков трех игральных кубиков.Определить ,кто из игроков получил большую сумму очков. ПОМОГИТЕ!

Смоделировать бросание игрального кубика - C++
Смоделировать бросание игрального кубика (то есть с помощью датчика случайных чисел получить одно из целых чисел 1, 2, …, 6) n раз каждым...

Программа моделирующая бросание монеты - C++
Написал программу моделирующая 100 бросаний монеты. Все работает, но почему-то все 100 раз выпадает только орел или только Решка. Как...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
13.12.2010, 20:32     Бросание двух костей. #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
#include <iostream>
 
int main()
{
   int HOW = 10;        //количество бросков костей
   std::cout << "Введите количество попыток: ";
   std::cin >> HOW;
                        //количество возможных сум = 11
   int kol[11];
   for (int i = 0; i < 11; i++) kol[i] = 0;
                        //заполняем массив нулями
   while (HOW)
   {
      int k1, k2;       // 1 и 2 кубик
      srand(time(0));
      k1 = rand()%6+1;  //бросаем 1 кость
      srand(time(0));
      k2 = rand()%6+1;  //бросаем 2 кость
      kol[k1+k2-2]++;   //какая сумма выпала
      HOW--;            //уменьшаем количество бросков
   }
   
   for (int i = 0; i < 11; i++)
      std::cout << "Сумма " << i+2 << " выпадала " << kol[i] << " раз\n";
   return 0;
}
как-то неправильно она работает...

Добавлено через 3 минуты
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>
using namespace std;
 
int main()
{
   int HOW = 10;        //количество бросков костей
   cout << "Введите количество попыток: ";
   cin >> HOW;
                        //количество возможных сум = 11
   int kol[11];
   for (int i = 0; i < 11; i++) kol[i] = 0;
                        //заполняем массив нулями
   while (HOW)
   {
      int k1, k2;       // 1 и 2 кубик
 
      k1 = rand()%6+1;  //бросаем 1 кость
      k2 = rand()%6+1;  //бросаем 2 кость
      
      kol[k1+k2-2]++;   //какая сумма выпала
      HOW--;            //уменьшаем количество бросков
   }
   
   for (int i = 0; i < 11; i++)
      std::cout << "Сумма " << i+2 << " выпадала " << kol[i] << " раз\n";
 
   return 0;
}
так лучше
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
13.12.2010, 20:46  [ТС]     Бросание двух костей. #3
Я в задаче забыл указать, что кости должны выбрасываться 36000 раз.
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
13.12.2010, 21:06     Бросание двух костей. #4
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
#include <iostream>
using namespace std;
 
int main()
{
   int HOW = 36000;        //количество бросков костей
                        //количество возможных сум = 11
   int kol[11];
   for (int i = 0; i < 11; i++) kol[i] = 0;
                        //заполняем массив нулями
   while (HOW)
   {
      int k1, k2;       // 1 и 2 кубик
 
      k1 = rand()%6+1;  //бросаем 1 кость
      k2 = rand()%6+1;  //бросаем 2 кость
      
      kol[k1+k2-2]++;   //какая сумма выпала
      HOW--;            //уменьшаем количество бросков
   }
   
   for (int i = 0; i < 11; i++)
      cout << "Сумма " << i+2 << " выпадала " << kol[i] << " раз\n";
 
   return 0;
}
так пойдёт??
olok07
Сообщений: n/a
04.12.2013, 17:42     Бросание двух костей. #5
// нужно написать программу, моделирующую бросание двух костей.
// Естественно, что поочередно, т.е. один раз получаем рандомное число от 1 до 6 включительно и присваиваем его первой кости, а затем генерируем с помощью rand() второе рандомное число и присваиваем его второй кости.
//Далее программа подсчитывает сумму их значений. Ваша программа должна бросать две кости ровно 36000 раз.

#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <time.h>

void printar (int [], const int, const int);



using namespace std;

int main()
{
const int n = 11, l = 36000;
int ar [n] = {0};
int nam;
srand (time (0));
for (int i = 1; i < l; i++)
{
nam = 1 + rand () % 6;
nam += 1 + rand () % 6;
ar [nam - 2]++;
}

printar (ar, n, l);



return 0;
}

void printar (int ar [], const int n, const int l)
{
for (int i = 0; i < n; i++)
cout << setw (6) << i + 2;
cout << endl << endl;
for (int i = 0; i < n; i++)

cout << setw (6) << ar [i];
cout << endl << endl;
for (int i = 0; i < n; i++)
cout << setw (4) << "1/" << setw (2) << l / ar [i];
cout << endl;


}
//В первом ряду выводятся выпавшие сочетания очков, во втором ряду выводятся количества выпавших сочетаний,
// а в третьем - общее отношение всех моделирований к выпавшим данного типа.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2013, 18:03     Бросание двух костей.
Еще ссылки по теме:

Программа бросания костей - C++
Написал программу бросания 2-ух костей 36000 раз. При выполнении программы, пишет почему перегружается массив, помогите найти ошибку ...

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

Рассчитать результат выброса костей - C++
Задали нам задачку : Надо бросать кости например 20-10 где 20 ето кол.костей а 10 ето кол.сторон . Подскажите по какой формуле можно...

Найти наибольшую сумму костей домино игрока - C++
У игрока есть k костей домино - прямоугольников 2x1. Он кладет их на доску так, чтобы не возникало наложений, и его выигрыш вычисляется как...

Определить, соответствует ли последовательность чисел ряду костей домино - C++
Дана последовательность двадцати чисел из интервала от 0 до 66, представляющая собой условное обозначение костей домино (например, число 42...

Упаковка и распаковка групп чисел и вероятность выпадения граней костей - C++
21. Создать программу с функциями упаковки/распаковки группы из 6 чисел диапазона 0..31 (00000..11111) в переменной типа longword...


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

Или воспользуйтесь поиском по форуму:
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
04.12.2013, 18:03     Бросание двух костей. #6
Mayonez, а ещё лучше использовать srand один раз в начале программы. Это сбросит сид генератора случайных чисел в сл учайное значение, связанное с текущим временем.
Если же вызывать srand в цикле, то генератор будет каждый раз сбрасываться в одно и то же значение: время-то на каждой итерации цикла не успевает измениться!
Yandex
Объявления
04.12.2013, 18:03     Бросание двух костей.
Ответ Создать тему
Опции темы

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