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

В классе 12 мальчиков и 13 девочек. Найдите вероятность того, что 2 сентября будут дежурить мальчик и девочка - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 55, средняя оценка - 4.93
imamatory
1 / 1 / 0
Регистрация: 25.11.2011
Сообщений: 11
28.03.2012, 15:48     В классе 12 мальчиков и 13 девочек. Найдите вероятность того, что 2 сентября будут дежурить мальчик и девочка #1
Приветствую всех, необходимо решить задачу:
В классе 12 мальчиков и 13 девочек. Найдите вероятность того, что 2 сентября будут дежурить мальчик и девочка
Задача может и не стоит того чтобы реализовывать в коде, однако, стоит признаться, что я не смог ее решить и еще мне стало интересно опробовать свои силы на с++(новом для меня языке)
Вот что получилось:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <conio.h>
 
using namespace std;
char people[25];
int count;
 
int main() 
{
    for(int i=0; i<25; i++) 
        if (i<12) people[i]='M';
        else people[i]='F';
    for(int q=0; q<25; q++)
        for(int j=0; j<25; j++)
            if (people[q]=='M' && people[j]=='F') count++;
 
    cout << count << "/" << 12*13;
    while(!kbhit());
 
    return 0;
}
Прошу помочь найти ошибки в решении. Мне почему то кажется что они есть...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2012, 15:48     В классе 12 мальчиков и 13 девочек. Найдите вероятность того, что 2 сентября будут дежурить мальчик и девочка
Посмотрите здесь:

Сколько кактусов девочка не успела побрить? C++
C++ Дано число года n. Найдите количество дней того года
Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе C++
Найдите ошибку в классе C++
C++ Рост учеников класса задан в виде массива. Определить средний рост мальчиков и девочек
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vndtta
66 / 43 / 5
Регистрация: 17.10.2011
Сообщений: 146
Завершенные тесты: 1
28.03.2012, 16:01     В классе 12 мальчиков и 13 девочек. Найдите вероятность того, что 2 сентября будут дежурить мальчик и девочка #2
условие
if (people[q]=='M' && people[j]=='F') count++;
надо поменять вот так
if (people[q] != people[j]) count++;
всего вариантов 25*24, а не 12*13
imamatory
1 / 1 / 0
Регистрация: 25.11.2011
Сообщений: 11
28.03.2012, 16:19  [ТС]     В классе 12 мальчиков и 13 девочек. Найдите вероятность того, что 2 сентября будут дежурить мальчик и девочка #3
Цитата Сообщение от vndtta Посмотреть сообщение
всего вариантов 25*24, а не 12*13
Можно пояснить почему?

В остальном верно?
Sahon
10 / 10 / 1
Регистрация: 09.04.2010
Сообщений: 141
28.03.2012, 16:59     В классе 12 мальчиков и 13 девочек. Найдите вероятность того, что 2 сентября будут дежурить мальчик и девочка #4
Комбинаторика: кол-во вариантов = 25 * (25 - 1) всех пар (если выбрать любого ученика, то с ним дежурить может 1 из 24 (25 - он сам));
на каждую девочку (из 13) - 12 мальчиков, то есть 13 * 12 пар мальчик + девочка;
дальше - начала теорвера: 13 * 12 / 25 * (25 - 1).

Добавлено через 4 минуты
13 * 12 / 25 * (25 - 1) = 13 * 12 / 25 * 24.
Умножаем, ищем НОД (13 * 12 и 25 * 24). (Если надо вывод в виде обычной, а не десятичной дроби).

Понял, или что-то уточнить?

Добавлено через 13 минут
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
#include <iostream>
 
using namespace std;
 
int gcd(int x, int y); //Алгоритм нахождения НОД
 
int main()
{   
    int male = 12; //Мальчики
    int female = 13; //Девочки
    int all = male + female; //Все
    
    int all_pairs = all * (all - 1); //Все пары
    int mf_pairs = male * female; //Пары мальчик + девочка
    
    double probability = (double)mf_pairs / (double)all_pairs;
    cout << probability //Десятичная дробь
         << endl; 
    
    cout << mf_pairs / gcd(all_pairs, mf_pairs)
         << " / "
         << all_pairs / gcd(all_pairs, mf_pairs) //Обычная дробь
         << endl;
 
    return 0;
}
 
int gcd(int x, int y)
{
    if (y == 0)
       return x;
    return gcd(y, x % y);
}
imamatory
1 / 1 / 0
Регистрация: 25.11.2011
Сообщений: 11
28.03.2012, 17:14  [ТС]     В классе 12 мальчиков и 13 девочек. Найдите вероятность того, что 2 сентября будут дежурить мальчик и девочка #5
Sahon, с теорией все стало ясно, спасибо большое. Но с рекурсией вы меня сильно запутали)))

update: Разобрался, возьму на вооружение
Yandex
Объявления
28.03.2012, 17:14     В классе 12 мальчиков и 13 девочек. Найдите вероятность того, что 2 сентября будут дежурить мальчик и девочка
Ответ Создать тему
Опции темы

Текущее время: 16:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru