-18 / 2 / 1
Регистрация: 06.03.2012
Сообщений: 47

Многопоточное вычисление количества сочетаний (комбинаторика)

14.06.2014, 01:31. Показов 2136. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите пожалуйста с задачкой
Разработать программу, вычисляющую число сочетаний C(k,n)=n!/(k!*(n-k)!).Вычисления факториалов n!, k!, (n-k)! должны быть выполнены в разных потоках.
С потоками сталкиваюсь первый раз...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.06.2014, 01:31
Ответы с готовыми решениями:

Рекурсия: вычисление количества сочетаний
Написать рекурсивную функцию вычисления количества сочетаний C (n , m) по формуле C (n , m) = C (n-1 , m-1) + C (n , m-1), зная, что C (m ,...

Рекурсия: вычисление количества сочетаний
Всем здрасти!)тут не давно рекурсию (object pascal) проходили вот...многое пропустила подскажите как вычислить ((n-1)...(n-k+1))/k!...

Вычисление количества сочетаний динамическим способом
Всем привет. Мне надо написать программу на с++, которая будет считать по формуле Ckn динамическим способом. Я немного не понимаю задачи....

5
 Аватар для Storm Screamer
4900 / 1469 / 117
Регистрация: 21.04.2013
Сообщений: 8,791
14.06.2014, 12:03
У вас будет 3 потока. Первый вычисляет n!, второй - k!, третий - (n-k)!. Результаты каждого потока передаются в тело основной программы. Для каждого потока пишите отдельную функцию... не знаю имеет ли смысл писать как создаются потоки, в сети полно подобной инфорации?
0
-18 / 2 / 1
Регистрация: 06.03.2012
Сообщений: 47
14.06.2014, 21:46  [ТС]
с формой чуть-чуть намудрил а так нормально вроде получилось
ниже приложил прогу саму, кому интересно, гляньте
Unit 1 main form
Delphi
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,Unit2,Unit3,Unit4;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Edit2: TEdit;
    Label4: TLabel;
    Edit3: TEdit;
    Label5: TLabel;
    Edit4: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  n,k,z:integer;c:real; res1,res2,res3:Extended;FS1,FS2,FS3:TThread;
implementation
 
{$R *.dfm}
 
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit3.Text:=Edit1.Text;
Edit4.Text:=Edit2.Text;
n:=StrToInt(Edit1.Text);
k:=StrToInt(Edit2.Text);
FS1:=p1.Create(false);
FS1.WaitFor;
FS2:=p2.Create(false);
FS2.WaitFor;
FS3:=p3.Create(false);
FS3.WaitFor;
 
c:=res1/(res2*res3);
label12.Caption:=floattostr(c);
Memo1.Lines.Clear;
Memo1.Lines.Add('res1= '+FloatToStr(res1));
Memo1.Lines.Add('res2= '+FloatToStr(res2));
Memo1.Lines.Add('res3= '+FloatToStr(res3));
Memo1.Lines.Add('c= '+FloatToStr(c));
end;
 
end.

Unit 2
Delphi
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
unit Unit2;
 
interface
 
uses
  Classes;
 
type
  p1 = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;
 
implementation
     uses Unit1;
{ Important: Methods and properties of objects in visual components can only be
  used in a method called using Synchronize, for example,
 
      Synchronize(UpdateCaption);
 
  and UpdateCaption could look like,
 
    procedure p1.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; }
 
{ p1 }
 
procedure p1.Execute;//для н!
var i:integer;
begin
res1:=1;
for i:=1 to n do
 res1:=res1*i;
end;
 
end.

Unit 3
Delphi
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
unit Unit3;
 
interface
 
uses
  Classes;
 
type
  p2 = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;
 
implementation
 uses Unit1;
{ Important: Methods and properties of objects in visual components can only be
  used in a method called using Synchronize, for example,
 
      Synchronize(UpdateCaption);
 
  and UpdateCaption could look like,
 
    procedure p2.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; }
 
{ p2 }
 
procedure p2.Execute;
var i:integer; // для к!
begin
res2:=1;
for i:=1 to k do
 res2:=res2*i;
end;
 
end.

Unit 4
Delphi
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
unit Unit4;
 
interface
 
uses
  Classes;
 
type
  p3 = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;
 
implementation
  uses Unit1;
{ Important: Methods and properties of objects in visual components can only be
  used in a method called using Synchronize, for example,
 
      Synchronize(UpdateCaption);
 
  and UpdateCaption could look like,
 
    procedure p3.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; }
 
{ p3 }
 
procedure p3.Execute; // для (н-к)!
var i:integer;
begin
z:=n-k;
res3:=1;
for i:=1 to z do
 res3:=res3*i;
end;
 
end.
Миниатюры
Многопоточное вычисление количества сочетаний (комбинаторика)  
Вложения
Тип файла: rar потоки.rar (176.1 Кб, 24 просмотров)
0
-18 / 2 / 1
Регистрация: 06.03.2012
Сообщений: 47
14.06.2014, 21:47  [ТС]
можно ли как нибудь оптимизировать код?
0
2 / 2 / 2
Регистрация: 10.09.2013
Сообщений: 72
14.06.2014, 22:19
Зачем создавать отдельные модули для потоков? Можно и в одном модуле
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
14.06.2014, 22:26
Какой смысл создавать потоки, если они запускаются друг за другом, а не одновременно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.06.2014, 22:26
Помогаю со студенческими работами здесь

Сумма сочетаний - Комбинаторика
Вычислить сумму С(2n,0)-С(2n-1,1)+С(2n-2,2)-...+(-1)nС(n,n)=??

Комбинаторика, вычислить число сочетаний C(N, K)
When I was in army, sometimes (about once a week) our unit was faced a charming alternative: most of the hands are to be sent to...

Комбинаторика, перебор всех сочетаний
Предположим есть массив int ar = {0,0,0,0,0,1,1,1} (содержит 0 либо 1, число единиц(нулей) постоянно для всех полученных сочетаний....

Комбинаторика - перебор всех возможных сочетаний
Всем привет! Есть некоторый массив A {11, 11, 22, 13, 34, 35, ...,NN} в котором содержится неопределённое количество двухзначных цифр....

многопоточное вычисление
Как организовать многопоточное вычисление функции (x+5)^(2/3) + abs(x+2)^2 - ln(5*tg(x)) - exp(7*sqrt(x))?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru