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

Реализация программы на С++ (Найти вероятности следующих событий:) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как сделать класс, содержащий несколько безразмерных массивов? http://www.cyberforum.ru/cpp-beginners/thread875403.html
Добрый день! Подскажите пожалуйста, как создать класс, содержащий несколько безразмерных массивов? Нужно сделать что то вроде: class A { int x; float y; float z; A(int size)
C++ сделать блок схему к программе #include <iostream> #include<Windows.h> void CheckToErorrs(int T,int a,int b) { while(T > a || T < b) { std::cout << "Извините, нет такой команды" << std::endl; std::cout << "\tПовторите Ввод! (1, 2, 3)" << std::endl; std::cin >> T; http://www.cyberforum.ru/cpp-beginners/thread875401.html
C++ задача на систему дорог
help с решением :) Система дорог Даны N городов соединенных M дорогами. С любого города можно добраться до любого другого города. Из них оставить дороги, чтобы не осталось циклов и сумма длин оставшихся дорог была минимальна. Входные данные В первой строке заданы два целых числа N и M – количество городов и количество дорог. Со второй строки заданы номера городов соединенных дорогами и их...
Графы (может ли данная матрица быть матрицей смежности простого неориентированного графа) C++
По заданной квадратной матрице из нулей и единиц определите, может ли данная матрица быть матрицей смежности простого неориентированного графа помогите решить вот такую задачу пожалуйста(( По заданной квадратной матрице n*n из нулей и единиц определите, может ли данная матрица быть матрицей смежности простого неориентированного графа. Формат входных данных Входной файл содержит число n (1 < n...
C++ СТРУКТУРЫ ДАННЫХ: ДЕРЕВЬЯ http://www.cyberforum.ru/cpp-beginners/thread875394.html
помогите пожалуйста вот с такой задачей(( 1. Написать программу подсчета числа вершин в бинарном дереве 2. Написать программу подсчета левых вершин бинарного дерева 3. Написать программу подсчета правых вершин бинарного дерева
C++ Стек/Разработать программу, реализующую алгоритм стека Добрый. Помогите пжл написать программу по заданию: Разработать программу, реализующую алгоритм стека (20 элементов). Задача решается в двух вариантах: статическом (на основе массива структур) и динамическом. В качестве элемента стека выбрать структуру, соответствующую индивидуальному варианту. Предусмотреть заполнение стека из файла (подготовить файл на 20 элементов). Предусмотреть... подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
24.05.2013, 08:44     Реализация программы на С++ (Найти вероятности следующих событий:)
Как-то так. Лучше проверьте.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <iostream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <iterator>
 
double negateProbability(double probability) {
  return 1 - probability;
}
 
class Shooter {
 public:
  Shooter(int ammo, double hitProbability) : ammo(ammo),
    hitProbability(hitProbability) {}
  int getAmmo() const {
    return ammo;
  }
  // шанс попасть
  double getHitProbability() const {
    return hitProbability;
  }
  // шанс промахнуться
  double getMissProbability() const {
    return negateProbability(getHitProbability());
  }
  // шанс, что как минимум все, кроме последнего
  // выстрелы промахнутся
  double getEmptyAmmoProbability() const {
    return pow(getMissProbability(), getAmmo() - 1);
  }
  // шанс, что останется хотя бы один патрон
  double getNonEmptyAmmoProbability() const {
    return negateProbability(getEmptyAmmoProbability());
  }
 private:
  int ammo;
  double hitProbability;
};
 
struct RandomShooter {
  int ammo;
  double minHitProbability, maxHitProbability;
  RandomShooter(int ammo, double minHitProbability, double maxHitProbability)
    : ammo(ammo), minHitProbability(minHitProbability),
    maxHitProbability(maxHitProbability) {}
  Shooter operator()() const {
    return Shooter(ammo, minHitProbability +
      (rand() % (int)((maxHitProbability - minHitProbability) * 1000) / 1000.));
  }
};
 
std::ostream &operator<<(std::ostream &stream, const Shooter &s) {
  return stream << "Shooter{" <<
    "ammo=" << s.getAmmo() << 
    std::fixed << std::setprecision(5) <<
    ",hitProbability=" << s.getHitProbability() << "}";
}
 
double multiplyByEmptyAmmoPorbability(double x, const Shooter &s) {
  return x * s.getEmptyAmmoProbability();
}
 
double multiplyByNonEmptyAmmoPorbability(double x, const Shooter &s) {
  return x * s.getNonEmptyAmmoProbability();
}
 
double accumulateMissChance(double x, const Shooter &s, double Pb) {
  return x + (s.getHitProbability() / s.getMissProbability()) * Pb; 
}
 
int main(int argc, char *argv[]) {
  srand(time(0));
  
  int ammo = 4;
  int numberOfShooters = 10;
  std::vector<Shooter> shooters;
  
  std::generate_n(std::back_inserter(shooters), numberOfShooters,
    RandomShooter(ammo, 0.2, 0.3));
   
  std::copy(shooters.begin(), shooters.end(),
    std::ostream_iterator<Shooter>(std::cout, "\n"));
 
  double Pa = 1.0;
  for (size_t i = 0; i < shooters.size(); ++i) {
    Pa = multiplyByEmptyAmmoPorbability(Pa, shooters[i]);
  }
  Pa = negateProbability(Pa);
  std::cout << "Probability that at least one shooter would have\n"
    "at least one shot left: " << Pa << std::endl;
  
  double Pb = 1.0;
  for (size_t i = 0; i < shooters.size(); ++i) {
    Pb = multiplyByNonEmptyAmmoPorbability(Pb, shooters[i]);
  }
  std::cout << "Probability that all shooters would have\n"
    "at least one shot left: " << Pb << std::endl;
    
  double Pc = 0.0;
  for (size_t i = 0; i < shooters.size(); ++i) {
    Pc = accumulateMissChance(Pc, shooters[i], Pb);
  }
  std::cout << "Probability that one and only one shooter would not have \n"
    "at least one shot left: " << Pc << std::endl;
}
 
Текущее время: 06:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru