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

Производитель потребитель - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Взаимно обратные числа http://www.cyberforum.ru/cpp-beginners/thread207292.html
Помогите написать программу, которая в последовательности действительных чисел позволяет выяснить, имеются ли среди соседних элементов в этой последовательности взаимно обратные числа. P.S. Приходится использовать с++ версии 5.02, не по своей воле. Заранее благодарен.
C++ массив Помогите с задачей пожалуйста: составить массив, в котором размерность задаём, 3*3, 4*4, 5*5 и т.д. Но чтобы главная диаганаль была заполнена единицами, а остальные произвольные числа http://www.cyberforum.ru/cpp-beginners/thread207289.html
Двумерные и одномерные массивы! C++
Помоги составить программу и блок-схему пожалуйста...
Матрица. определние мин и макс элементом в побочной диагонали C++
Вообщем изначально задание было такое: 1. Пользователь вводит максимальное значение чисел макрицы (оговорить, чтоб не привышало 999) 2. В программу ввести (с помощью #define) размеры матрицы 10*10 3. Матрица должна заполняться случайными числами. 4. Программа должно состоять из нескольких функций. а) заполнение случайными числами б) генерирование случайными числами в)...
C++ Лабораторная по информатике http://www.cyberforum.ru/cpp-beginners/thread207276.html
Привет. Нужна помощь. Задание - написать программу на с++ и составить блоксхему: Найти значения выражений системы Y для x є с шагом 0,5 http://i.***********/i5/13/03/820313/Bezymiannyi.jpg з.ы. все должно быть написано на начальном уровне, без всяких уберсложных конструкций. просто циклы и математические операции.
C++ Подсчитать количество чисел Дано число К, матрица n*n и массив с размером n Посчитать какие числа по модулю больше чем заданное число К и если такое числ в i-ом строке есть,то y++ программа считает только для первых двух строк...а дальше грр,..в лаборатории тоже самое было...полчаса с преподом трудились...ничего не вышло.. #include <iostream> #include <time.h> #include <windows.h> #include <math.h> #include... подробнее

Показать сообщение отдельно
pepsikat
 Аватар для pepsikat
292 / 12 / 2
Регистрация: 21.12.2010
Сообщений: 295
22.12.2010, 23:31     Производитель потребитель
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
//---------------------------------------------------------------------------
 
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <windows.h>
 
#define BufferSize 2
#define Producers 5
#define Consumers 5
 
int Buffer[BufferSize];
bool Trans;
HANDLE hFull, hEmpty, hMutex;
 
DWORD WINAPI Producer(void * pValue)
{
 int SleepInterval, Value, i, Count, Written;
 Trans = true;
 Count = 15;
 while (Count>0)
     {
      Count--;
      Value = random(10)+1;
      WaitForSingleObject(hEmpty, INFINITE);
      WaitForSingleObject(hMutex, INFINITE);
 
      if (Buffer[BufferSize-1]!=0)
       printf("Producer: %d | Value %d losted\n", Value, Buffer[BufferSize-1]);
      else
       printf("Producer: %d\n", Value);
      for (i=BufferSize-2; i >= 0; i--)
       Buffer[i+1]=Buffer[i];
      Buffer[0]=Value;
 
      ReleaseSemaphore(hMutex, 1, NULL);
      ReleaseSemaphore(hFull, 1, NULL);
      SleepInterval=random(2000)+2000;
      Sleep(SleepInterval);
      }
 return 0;
}
 
DWORD WINAPI Consumer(void * pValue)
{
int SleepInterval, Value, i, Count, Written;
while(Trans)
  {
  Written=0;
  WaitForSingleObject(hFull, INFINITE);
  WaitForSingleObject(hMutex, INFINITE);
  for (i=BufferSize-1; i>=0; i--)
    if (Buffer[i]!=0)
      {
      Written=i;
      break;
      }
  Value=Buffer[Written];
  Sleep(random(21));
  Buffer[Written]=0;
  if (Value==0)
    printf("\t\t\t\tConsumer: %d | The value is wrong!\n", Value);
  else
    printf("\t\t\t\tConsumer: %d\n", Value);
 
  ReleaseSemaphore(hMutex, 1, NULL);
  ReleaseSemaphore(hEmpty, 1, NULL);
  SleepInterval=random(2000)+1000;
  Sleep(SleepInterval);
  }
}
 
int main(void)
{
HANDLE hThreads[Producers+Consumers];
DWORD ThreadId;
int i;
randomize();
hMutex=CreateSemaphore(NULL, 1, 1,"Mutex");
hFull=CreateSemaphore(NULL, 0, BufferSize ,"Full");
hEmpty=CreateSemaphore(NULL, BufferSize, BufferSize,"Empty");
 
for (i=0; i<BufferSize; i++) Buffer[i]=0;
 
for (i=0; i<Producers; i++)
  hThreads[i]=CreateThread(0, 0, Producer, 0,0, &ThreadId);
 
for (i=Producers; i<Producers+Consumers; i++)
  hThreads[i]=CreateThread(0, 0, Consumer, 0, 0, &ThreadId);
 
WaitForMultipleObjects(Producers, hThreads, true, INFINITE);
 
Trans=false;
 
WaitForMultipleObjects(Producers+Consumers, hThreads, true, INFINITE);
 
for (i=0; i<Producers+Consumers; i++)
  CloseHandle(hThreads[i]);
  CloseHandle(hMutex);
  CloseHandle(hFull);
  CloseHandle(hEmpty);
 
getch();
return 0;
}
 
//---------------------------------------------------------------------------
 Комментарий модератора 
Используйте теги форматирования кода.
 
Текущее время: 12:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru