Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 27.04.2013
Сообщений: 5

Как выполнить циклы одновременно?

27.04.2013, 19:12. Показов 2413. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте программисты я работаю над маленьким проектом разделения в трехфазном сепараторе.Все почти уже закончил.Только возникла проблема с одновременным выполнением циклов. вот алгоритмы
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
#include <graphics.h>
#include <conio.h> 
main() 
{ 
int x,y,yd,yz,yo,xo; 
float x2,x3; 
initwindow(500,500); 
setfillstyle(1,15); 
floodfill(1,1,15); 
setcolor(0); 
arc(150, 150, 120, 140, 70); 
arc(150,150,156,230,70); 
setcolor(0);
line(245,203,200,203); 
moveto(15,23);// liniya techeniya nefti 
lineto(95,105); 
moveto(15,48); 
lineto(85,120); 
line(105,203,220,203);//qrafika nachinayetsya 
line(115,89,220,89);
 
rectangle(220,80,240,170); 
setfillstyle(1,0); 
floodfill(225,90,0); 
setcolor(0); 
line(240,89,310,89);
line(323,89,340,89);
line(310,89,310,74);
line(323,89,323,74); 
line(240,203,350,203); 
arc(306, 150, 310,60 , 70); 
setcolor(1); 
rectangle(290,203,300,230); 
setcolor(0); 
rectangle(334,203,344,230); 
setcolor(0);//seraya stena 
line(85,175,220,175); 
line(80,150,220,150); 
line(219,175,219,150); 
setfillstyle(1,8); 
floodfill(100,155,0); 
line(241,175,325,175); 
line(241,150,320,150); 
line(241,175,241,150); 
line(325,150,325,175); 
 
line(320,150,325,150);
setcolor(8);
line(324,202,324,176);
line(325,202,325,176); 
setfillstyle(1,8); 
floodfill(255,155,0);
x2=106; x3=92; yd=203; yz=23; yo=48;xo=10;
for(x=15;x<89;x+=1){
yz+=1; yo+=1; 
setcolor(0);
line(x,yz,x,yo);delay(100);}
 
for(y=203;y>188;y-=1,x2-=0.97){setcolor(COLOR(0,0,255));
line(323,y,x2,y);delay(210);
line(300,yd,290,yd);yd+=1;}
for(y=188;y>175;y-=1,x3-=0.58){ setcolor(COLOR(0,0,255));
line(323,y,x3,y);delay(210);
line(300,yd,290,yd);yd+=1;}
for(y=176;y>169;y-=1){
line(240,y,219,y);delay(125);
}
 
getch (); 
closegraph();}

Мне надо чтобы на верхней части нефть разделялась одновременно с водой.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.04.2013, 19:12
Ответы с готовыми решениями:

Циклы for и while (выполнить в двух вариантах)
Циклы for и while (выполнить в двух вариантах) Вычислить и вывести на экран в виде таблицы значения функции F от x1 до x2 с шагом dx. ...

Можно ли и как выполнить одновременно несколько команд?
Помню, что-то такое было про управление потоками в CMD... Нужно запустить два цикла одновременно!

Как выполнить два трансформирования меша одновременно
Здравствуйте! Я столкнулся с такой проблемой: мне нужно уменьшить объект и передвинуть, но у меня почему то не получается. Вот код: ...

11
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
27.04.2013, 19:19
использовать потоки, и то истинную много поточность можно поучить только на много процессорных системах, возможно также распоралелить циклы в GPU.
1
0 / 0 / 0
Регистрация: 27.04.2013
Сообщений: 5
27.04.2013, 19:32  [ТС]
Цитата Сообщение от ssXXss Посмотреть сообщение
использовать потоки, и то истинную много поточность можно поучить только на много процессорных системах, возможно также распоралелить циклы в GPU.
А нельзя включить все в один большой цикл? Я просто начинающий тут многое не понятно..Тем не менее спасибо за ответ

Добавлено через 3 минуты
Еще надо как то изобразить как нефть будет спускаться в правую часть сепаратора и выходит из трубы.Не знаю что с етим вобще делать..Просто в самом сепараторы процессы протекают одновременно.По другому бы проблем не бфло
0
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
27.04.2013, 19:34
не думаю что стоит все запихивать в один цикл, лучше задачу разбить на ряд мелких, проще баги отловить, но это сугубо мое не правильное мнение )).
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
27.04.2013, 19:38
Эта задача легко решается при помощи OpenMP.
1
0 / 0 / 0
Регистрация: 27.04.2013
Сообщений: 5
27.04.2013, 19:45  [ТС]
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Эта задача легко решается при помощи OpenMP.
Можете немного подсказать поподробнее плиз?
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
27.04.2013, 19:49
Цитата Сообщение от Shadowmasster Посмотреть сообщение
Можете немного подсказать поподробнее плиз?
Сначало поддержку OpenMP нужно врубить, а затем копать в сторону omp section. Но я считаю, что распаралеливание тут не очень подходит. Лучше последовательно рисовать по кусочку то того, то другого.
1
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
27.04.2013, 19:52
http://software.intel.com/ru-r... 1/openmp-c

Добавлено через 1 минуту
для винды в частности http://msdn.microsoft.com/ru-r... 35940.aspx
1
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
27.04.2013, 20:20
Если распаралелить, то не будет ясно кто выполнится быстрее - первый поток или второй. В случае OpenMP - мы даже не будем знать точно ли у нас будет два потока(хотя это можно задать вручную).
0
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
27.04.2013, 20:31
не знаю как для никсов но в винде можно использовать события , например - все потоки по окончанию работы сигнализируют в основной что дело сделано , основной или дожидается окончания выполнения работы всеми потоками или использует результат сразу после получения события от конкретного.

Добавлено через 3 минуты
тык много поточность и методы синхронизации ну много еще всего с++ 11
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
27.04.2013, 22:29
Цитата Сообщение от ssXXss Посмотреть сообщение
сигнализируют в основной что дело сделано
В винде тоже самое есть. Но проблема в другом. Мы заранее не знаем как будут выполняться потоки. Может первый запуститься, а второй тока через секунду. Короче, проблема в синхронизации. Каждый раз будет различный результат выполнения...
0
0 / 0 / 0
Регистрация: 27.04.2013
Сообщений: 5
27.04.2013, 23:05  [ТС]
Цитата Сообщение от ssXXss Посмотреть сообщение
не знаю как для никсов но в винде можно использовать события , например - все потоки по окончанию работы сигнализируют в основной что дело сделано , основной или дожидается окончания выполнения работы всеми потоками или использует результат сразу после получения события от конкретного.

Добавлено через 3 минуты
тык много поточность и методы синхронизации ну много еще всего с++ 11
ВСЕ СДЕЛАЛ...ТОЛЬКО ПО ДРУГОМУ ПО КуСОЧКАМ.ПРАВДА МНОГО ВРЕМЕНИ ЗАНЯЛО..Осталось только пузырьки газа сделать ...Вот алгоритм посмотрите и оцените если интересно...
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <graphics.h>
#include <conio.h>      
main()      
{            
             int x,y,yd,yz,yo,xo,yu,xs,yh,xl,yb,fg;  
             float x2,x3,oh;    
             initwindow(500,500);      
             setfillstyle(1,15);      
             floodfill(1,1,15);      
             setcolor(0);      
             arc(150, 150, 120, 140, 70);      
             arc(150,150,156,230,70);      
             setcolor(0);
             line(245,203,200,203);       
             moveto(15,23);// liniya techeniya nefti       
             lineto(95,105);       
             moveto(15,48);       
             lineto(85,120);             
             line(105,203,220,203);//qrafika nachinayetsya      
             line(115,89,220,89);
                    
             rectangle(220,80,240,170);        
             setfillstyle(1,0);      
             floodfill(225,90,0);          
             setcolor(0);      
             line(240,89,310,89);
             line(323,89,340,89);
             line(310,89,310,74);
             line(323,89,323,74);      
             line(240,203,350,203);      
             arc(306, 150, 310,60 , 70);            
             setcolor(1);      
             rectangle(290,203,300,230);            
             setcolor(0);      
             rectangle(334,203,344,230);            
             setcolor(0);//seraya stena      
             line(85,175,220,175);      
             line(80,150,220,150);      
             line(219,175,219,150);            
             setfillstyle(1,8);      
             floodfill(100,155,0);      
             line(241,175,325,175);      
             line(241,150,320,150);      
             line(241,175,241,150);      
             line(325,150,325,175);      
                   
             line(320,150,325,150);
             setcolor(8);
             line(324,202,324,176);
             line(325,202,325,176);     
             setfillstyle(1,8);      
             floodfill(255,155,0);
             x2=106; x3=92; yd=203; yz=23; yo=48; xo=10; yu=149; xs=81; yh=202; xl=350; yb=204;
              for(x=15;x<89;x+=1){
             yz+=1; yo+=1;     
              setcolor(0);
              line(x,yz,x,yo);delay(100);}
                                  
             for(y=203;y>188;y-=1,x2-=0.97){setcolor(COLOR(0,0,255));
             line(323,y,x2,y);delay(210);
             line(300,yd,290,yd);yd+=1;
             setcolor(4);
             line(219,yu,xs,yu);yu-=1;xs+=0.9;
             line(241,yu+1,325,yu+1);
             line(326,yh,xl,yh);yh-=1;xl+=1;
             line(334,yb,344,yb);yb+=1;
             }
             line(334,219,344,219);
             line(326,187,365,187);setcolor(COLOR(0,0,255));
             line(323,188,91.42,188);
             line(300,218,290,218);
             delay(210);setcolor(4);
             line(334,220,344,220);
             line(326,186,365.5,186);setcolor(COLOR(0,0,255));
             line(323,187,90.84,187);
             line(300,219,290,219);
             delay(210);setcolor(4);
             line(334,221,344,221);
             line(326,185,366,185);setcolor(COLOR(0,0,255));
             line(323,186,90.26,186);
             line(300,220,290,220);
             delay(210);setcolor(4);
             line(334,222,344,222);
             line(326,184,366.5,184);setcolor(COLOR(0,0,255));
             line(323,185,89.68,185);
             line(300,221,290,221);
             delay(210);setcolor(4);
             line(334,223,344,223);
             line(326,183,367,183);setcolor(COLOR(0,0,255));
             line(323,184,89.10,184);
             line(300,222,290,222);
             delay(210);setcolor(4);
             line(334,224,344,224);
             line(326,182,367.5,182);setcolor(COLOR(0,0,255));
             line(323,183,88.52,183);
             line(300,223,290,223);
             delay(210);setcolor(4);
             line(334,225,344,225);
             line(326,181,368,181);setcolor(COLOR(0,0,255));
             line(323,182,88.04,182);
             line(300,224,290,224);
             delay(210);setcolor(4);
             line(334,225,344,225);
             line(326,180,368.5,180);setcolor(COLOR(0,0,255));
             line(323,181,87.46,181);
             line(300,225,290,225);
             delay(210);setcolor(4);
             line(334,226,344,226);
             line(326,179,369,179);setcolor(COLOR(0,0,255));
             line(323,180,86.88,180);
             line(300,226,290,226);
             delay(210);setcolor(4);
             line(334,227,344,227);
             line(326,178,369.5,178);setcolor(COLOR(0,0,255));
             line(323,179,86.30,179);
             line(300,227,290,227);
             delay(210);setcolor(4);
             line(334,228,344,228);
             line(326,177,370,177);setcolor(COLOR(0,0,255));
             line(323,178,85.72,178);
             line(300,228,290,228);
             delay(210);setcolor(4);
             line(334,229,344,229);
             line(326,176,370.5,176);setcolor(COLOR(0,0,255));
             line(323,177,85.16,177);
             line(300,229,290,229);
             delay(210);setcolor(4);
             line(326,175,370.6,175);setcolor(COLOR(0,0,255));
             line(323,176,84.60,176);
             
             oh=370.6; fg=174;
             for(y=176;y>169;y-=1){ setcolor(COLOR(0,0,255));
             line(240,y,219,y);setcolor(4);
             line(326,fg,oh,fg);oh+=0.4;fg-=1;
             delay(210);
             }
             for(fg=167;fg>134;fg--){
             line(326,fg,oh,fg);oh+=0.04;delay(120);}
             
             
                        
             getch ();          
             closegraph();}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.04.2013, 23:05
Помогаю со студенческими работами здесь

Поток.Или как выполнить две функции одновременно
Мне надо в одно время выполнить два действия. Функция которая получает координаты клика и и что рисует объект и стирает его.Можно ли это...

Как выполнить поиск одновременно по нескольким значениям документа
в общем задача такая: имеется база. в ней есть документы которые заносятся строго по определенному шаблону. необходимо найти нужную...

Как можно выполнить одновременно два метода не используя Thread
Мне нужно использовать два метода (приём сообщения и его вывод ,запись и отправка сообщения ) одновременно без класса Thread .Методы...

Возможно ли одновременно выполнить два действия в программе?
Возможно ли одновременно запустить два таймера или в принципе выполнить более одного оператора? Т.е. не таким образом: timer1.start; ...

Выполнить два действия одновременно, не загружая интерфейс
Написал простой таймер Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru