Моделирование подбрасывания монеты, подсчет результатов. Эта программа для тех, кто учится использовать функции и массивы.
Напишем программу, которая моделирует бросание монеты. Для каждого броска программа будет выводить Орел или Решка.
Промоделируем 100 раз и подсчитаем, сколько раз выпала каждая сторона монеты. Будем использовать генератор случайных чисел. При правильной работе программы результат каждый раз должен быть разным, но каждая сторона должна выпадать примерно в половине случаев. Для более точного моделирования можно увеличить количество бросков, то есть выборку.
Для выполнения броска нужно использовать отдельную функцию flip, которая не принимает аргументов, а возвращает числа 0 (для орла) и 1 (для решки).
Дальше мой вариант решения задачи.
В этой программе я не использую конструкции if-else и switch, но применяю массивы. Так получается короче и для подсчета результатов, и для их вывода.
Сначала задаем два массива, в каждом из которых два элемента. В одном массиве будем хранить результаты выпадения каждой стороны монеты (0 элемент – результат выпадения орла, 1-й – выпадение решки). Во втором массиве храним названия результатов (0-й элемент «Орел», 1-й «Решка»).
Для хранения текущего результата используем отдельную переменную.
Инициализируем генератор случайных чисел от текущего времени. Если этого не сделать, то последовательность выпадения чисел будет каждый раз одинаковая.
Для броска пишем функцию flip, которая возвращает результат случайного выбора числа.
В соответствии с возвращенным значением увеличиваем значение соответствующего элемента массива результатов, а на экран выводим соответствующий элемент массива названий.
В конце программы выводим итоговые результаты бросков.
Возможно, не очень понятно из текста, но программа простая:
Как видим, примерно равное число выпадений орла и решки.
Если по заданию требуется условные операторы или switch, то нужно ввести две переменные вместо элементов массивов и использовать их для подсчета сумм.
Напишем программу, которая моделирует бросание монеты. Для каждого броска программа будет выводить Орел или Решка.
Промоделируем 100 раз и подсчитаем, сколько раз выпала каждая сторона монеты. Будем использовать генератор случайных чисел. При правильной работе программы результат каждый раз должен быть разным, но каждая сторона должна выпадать примерно в половине случаев. Для более точного моделирования можно увеличить количество бросков, то есть выборку.
Для выполнения броска нужно использовать отдельную функцию flip, которая не принимает аргументов, а возвращает числа 0 (для орла) и 1 (для решки).
Дальше мой вариант решения задачи.
В этой программе я не использую конструкции if-else и switch, но применяю массивы. Так получается короче и для подсчета результатов, и для их вывода.
Сначала задаем два массива, в каждом из которых два элемента. В одном массиве будем хранить результаты выпадения каждой стороны монеты (0 элемент – результат выпадения орла, 1-й – выпадение решки). Во втором массиве храним названия результатов (0-й элемент «Орел», 1-й «Решка»).
Для хранения текущего результата используем отдельную переменную.
Инициализируем генератор случайных чисел от текущего времени. Если этого не сделать, то последовательность выпадения чисел будет каждый раз одинаковая.
Для броска пишем функцию flip, которая возвращает результат случайного выбора числа.
В соответствии с возвращенным значением увеличиваем значение соответствующего элемента массива результатов, а на экран выводим соответствующий элемент массива названий.
В конце программы выводим итоговые результаты бросков.
Возможно, не очень понятно из текста, но программа простая:
//Программа, моделирующая бросание монетыРисунок результата:
#include <iostream>
#include <ctime>
using namespace std;
int flip();
void main()
{
//массив результатов бросков, 0 - орел, 1 - решка
int ar[2]={0, 0};
//массив для названий результатов
char* results[2] = {"Orel", "Reshka"};
//результат броска
int res;
//инициализация генератора случайных чисел
//от текущего времени
srand(time(NULL));
cout<<"100 broskov\n";
//цикл моделирования 100 бросков
for(int i=0; i<100; i++)
{
//вызов функции броска
res = flip();
//увеличиваем соответствующий результат
ar[res]++;
//выводим результат броска
cout<<results[res]<<endl;
}
//вывод общих результатов
cout<<"Resultaty:\n";
cout<<"Orel - "<<ar[0]<<endl;
cout<<"Reshka - "<<ar[1]<<endl;
cin.get();
return;
}
//функция броска монеты
int flip()
{
//случайное число из двух - 0 и 1
return rand()%2;
}
Как видим, примерно равное число выпадений орла и решки.
Если по заданию требуется условные операторы или switch, то нужно ввести две переменные вместо элементов массивов и использовать их для подсчета сумм.
