Loading [MathJax]/extensions/Safe.js
Образовательный форум - онлайн помощь в учебе
Помощь в решении задач => Программирование => Тема начата: Yomka от 16 Февраля 2012, 12:03:53
-
В копилке было 100 советских монеток достоинством в 1, 2, 3, 5, 10, 15, 20 и 50 копеек задайте массив M(100) случайным образом из этого набора а затем подсчитайте сколько в копилке было пята чков и полтинников и какова общая сумма накопленного
Помогите пожалуйсто!
-
Выкладывайте свой код с указанием ошибок.
-
Какой язык программирования то?
-
Алгоритм решения мне не понятен. Ну будет у нас 100 случайных чисел и что с ним делать?
Думается так. Будем решать другую задачу. У нас равновероятны 8 событий (выпадение любой из 8 монет). Возьмём случайные числа в пределах (0 .. 1). Потом суммируем 8 чисел. Сумма пусть равна 3.815. Возьмём коэфф приведения к=100/3.815 и умножим каждое выпадение на этот коэф. Пусть для копейки (первое число) было 0.1234. тогда из суммы в сто монет получим 3.2346 монеты. 1.5 землекопа нам никто не выделит. Округляем. Получается 3 шт. однокопеечных монет. Всего получим 98 монет. Нехватка 2 монет. В какую кучку распределить эти монеты? Опять кости кидать? Что-то хитроумно...
Коллеги, кто что скажет?
-
Стандартный генератор даёт числа на [0; 1]. У нас 8 монет. Делим интервал [0; 1] на 8 отрезков.
Запускаем генератор на 100 обращений. На какой отрезок попало число, такая и монетка.
Набрало 100 монет, а далее дело техники.
-
Поскольку Selyd всё описал (я правда сам понял, что да как, только после драки молчать надо), остаётся рабочую прогу написать.
Прога проверена на VC++ 2008 Express. (свободная, бесплатная)
-
ТС неинтересно, последняя активность была сразу после написания вопроса, больше он на форум не заходил
-
Пока на разделе затишье, предлагаю обсудить новый код программы. Различия.
1. Добавлен #include <vector>
2. Заменён #define на более правильный const int
3. Описатель String исключён. Он используется один раз и не нужен.
4. В коэфф масштабирования случайных чисел исключена +1. В MDSN она есть, больше нигде в литературе не встречал. По логике, вроде не нужна.
5. Массив sm[] заменён на вектор sm() с занулением. Так, ИМХО, современнее.
6. В стоку вывода добавлен gcnew String(..) сразу. Без предварительного запоминания в String s. Код короче.
Проверено в VC++ 2010 Express. Работает :D.