Вычислить вероятность попадания в мишень - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Стало быть я новичок в области программирования, за помощь буду признателен. 1. Стрелок производит по мишени 5 выстрелов. Вероятность попадания в мишень при каждом выстреле 0,6. Вычислить вероятность того, что стрелок не попадет в мишень ни разу; попадет один раз; 2 раза; 3 раза. Вычисление вероятности m попаданий при n выстрелах оформить в виде функции. Указания: Вероятность того, что стрелок при n выстрелах попадет m раз в мишень, равна Cm*pm*Qm-n где C = (n!)/(m!(n-m)!); P = 0.6; Q = 1 - P = 0.4 2. Написать программу отображающую последние 10 строк лог файла в терминале. 3. Написать программу обработки кольцевого списка, решающую задачу Джозефуса. Задача Джозефуса представляет собой считалку: элементы становятся в круг, вводится некоторое число К. Необходимо, начиная с первого, отсчитать К-й элемент списка и удалить его. Дела отсчет начинается с (К+1)-го элемента и опять удаляется К-й элемент. Так продолжается до тех пор, пока в списке не останется один элемент. Выдать содержимое последнего оставшегося элемента.

Решение задачи: «Вычислить вероятность попадания в мишень»

textual
Листинг программы
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <assert.h>
 
 
size_t fact(size_t n) {
    size_t result = 1;
    
    while (n > 1) {
        result *= n--;
    }
 
    return result;
}
 
double C(size_t m, size_t n) {
    return (double)fact(n) / (fact(m) * fact(n-m));
}
 
double prob(size_t shots, size_t hits, double p) {
    assert(hits <= shots);
    assert(p >= 0 && p <= 1);
    
    return C(hits, shots) * (pow(p, hits) * pow(1.-p, shots-hits));
}
 
 
int main() {
    double const p = 0.6;
    size_t const shots = 5;
    size_t const max_hits = 3;
    size_t hits;
    
    for (hits = 0; hits <= max_hits; ++hits) {
        printf("%d hits:\t%f\n", hits, prob(shots, hits, p));
    }
    
    return EXIT_SUCCESS;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с математическими функциями и assert
  2. Определяем функцию fact, которая вычисляет факториал числа n
  3. Определяем функцию C, которая вычисляет сочетания из n по m
  4. Определяем функцию prob, которая вычисляет вероятность попадания в мишень
  5. В функции main задаем константы для проверки
  6. С помощью цикла for выводим вероятность попадания от 0 до 3 раз в мишень
  7. Возвращаем EXIT_SUCCESS

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.786 из 5
Похожие ответы