Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Организовать введение данных в массив , обработку элементов и выведение результатов используя указатели. Дано натуральное число N и одномерный массив https://www.cyberforum.ru/ cpp-beginners/ thread1115939.html
Организовать введение данных в массив , обработку элементов и выведение результатов используя указатели. Дано натуральное число N и одномерный массив А1, А2,...,AN целых чисел. Найти три не находящихся рядом числа, умножение котах равняется Р. B C++!
C++ Dev Cpp Решение системы алгебраических уравнений компактным методом исключения
Здравствуйте! Есть задание, "решение системы алгебраических уравнений компактным методом исключения. Коэффициенты обрабатываются в двух матрицах, матрица действительной части и матрица мнимой части комплексного числа в алгебраической форме." На входе - txt файл с коэффициентами системы в виде матрицы размером N строк на N+1 столбцов, в N+1 столбце - свободные члены системы, коэффициенты -...
C++ Массив. нужно перемножить элементы столбика и вывести результат я понял только как считать всю инф. с файла, а вот как перемножить теперь эл-ты 1 столбца? #include <iostream> #include <fstream> #include <iomanip> #include <stdlib.h> using namespace std; int main() { setlocale (LC_ALL, "RUS"); int n=0; https://www.cyberforum.ru/ cpp-beginners/ thread1115924.html C++ более компактный код нужна замыниты вес то что я написал в функции void n() на более компактный код (суть кода выравнивать столбик ) //Calculator #include<iostream> #include<conio.h> using namespace std; https://www.cyberforum.ru/ cpp-beginners/ thread1115918.html
Сериализация и десериализация двусвязного списка C++
Ребят, помогите плиз решить задачу, которые сутки сижу нифига не получается(( Может я просто, глупый((( Реализуйте функции сериализации и десериализации двусвязного списка, заданного следующим образом: struct ListNode { ListNode * prev; ListNode * next; ListNode * rand; // указатель на произвольный элемент данного списка std::string data; };
C++ Intel (R) C++ https://www.cyberforum.ru/ cpp-beginners/ thread1115899.html
Кто-нибудь пользовался этим компилятором? Если да, то правда, что он оптимальнее собирает код для процессоров Intel в сравнении с MV C++?
C++ Stdext::hash_map и std::map Здравствуйте форумчане! Может ли кто нибудь объяснить мне отличие stdext::hash_map от std::map? В интернете не так много информации о нем, а на cplusplus.com её нету. Единственное что я понял - stdext::hash_map использует какую то функцию, которая влияет на хранение данных) В принципе ничего особенного не прошу) Мне хватит куска кода, который наглядно показывает работу stdext::hash_map.... https://www.cyberforum.ru/ cpp-beginners/ thread1115894.html C++ Visual Studio Express 2013 компиляция для windows 2000
Привет всем! Скажите, это реально скомпилировать проект для windows 2000?
C++ возникает ошибка при использовании массива, как параметр функции Добрый вечер. Помогите разобраться, пожалуйста. Задача: Проверьте, верно ли, что количество строк матрицы А(n*n), в которой все числа нечетные, кратно заданному числу x. int kratnost (int n, int x) //проверка на кратность х. { if (n%x==0) return 1; //число строк кратно х. else return 0; //число строк не кратно х. https://www.cyberforum.ru/ cpp-beginners/ thread1115882.html C++ Кириллица WIN32 CA https://www.cyberforum.ru/ cpp-beginners/ thread1115875.html
Добрый вечер! прошу помощи - возникла проблема с кириллицей VS 2008 Win32 CA есть txt файл, из которого считываю строки. Для сортировки по массиву в txt файле есть кириллические идентификаторы, которые засовываю в char*, однако такая запись не работает if(cg=="ЦГ") пробовал изменить кодировку под DOS 866, еще SetConsoleCP(1251); SetConsoleOutputCP(1251); а так же setlocale(LC_ALL,...
C++ Вывести двумерный массив с 3 знаками после запятой
всем привет) мне нужно вывести двумерный массив с 3 знаками после запятой не получается(( пробовала по- разному с принтф если большое число, то тупо формат выводит его.....почему-то с cout пробовала,setprecision(3) не работает, ошибки нет, но выводит только целую часть подскажите пжл #include <iostream.h> #include <conio.h>
C++ Неправильно работает функция gets( ) ..... char *str = new char; gets( str ); printf( "%s", str ); ..... https://www.cyberforum.ru/ cpp-beginners/ thread1115868.html
9 / 9 / 10
Регистрация: 05.09.2013
Сообщений: 502
0

Задача о философах с использованием событий - C++ - Ответ 5882980

11.03.2014, 00:58. Показов 3550. Ответов 13
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Пытаюсь разобраться с этой задачей .
Задача: за круглым столом сидят философы. Их жизненный цикл состоит из двух состояний: ест и думает. Ест он двумя вилками - правой и левой, а вилки расположены не каждому по две, а между каждыми двумя философами по одной. Когда один ест - вилки вокруг него блокируются событиями, а если хотя бы одна из вилок занята - он просто забивает на еду и начинает думать.
Поискал в интернете и нашёл такой пример:
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
#include "stdafx.h"
#include "windows.h"
#include "conio.h"
#include "stdlib.h"
 
#define min 100
#define max 500
#define step 4
#define kol 5
 
HANDLE some[kol]; 
HANDLE Philosopher[kol];
 
LPTHREAD_START_ROUTINE WINAPI philosopher(LPVOID arg)
{
    int left_fork = (int)arg, right_fork = left_fork+1;
 
    for(int i = 0; i < step; i++)   //повторяет 4 раза
    {
        Sleep(min + rand()%(max-min)); //задержка
        printf("Philosopher[%i] want to eat.\n", left_fork);
        printf("Try to cath forks.\n");
        printf("Left[%i] and right[%i] forks - ", left_fork, right_fork);
        //проверка вилок
        if (WaitForSingleObject(some[left_fork], 1) != WAIT_OBJECT_0 &
            WaitForSingleObject(some[right_fork], 1) != WAIT_OBJECT_0) 
        {
            printf("success.\n");
            SetEvent(some[left_fork]);  //объект "событие" в сигнальное состояние
            SetEvent(some[right_fork]); //объект "событие" в сигнальное состояние
            printf("Eating.");          //философ ест
            Sleep(min + rand()%(max-min));
            ResetEvent(some[left_fork]); //сброс события
            ResetEvent(some[right_fork]);//сброс события
        }
        else printf("failed.\n");       //философу не удалось поесть
 
        Sleep(min + rand()%(max-min));
        printf("Philosopher[%i] THINKING.\n", left_fork); //философ думает
    }
  
 
    return 0;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    for (int i = 0; i <kol; i++)
    {
        some[i] = CreateEvent(NULL, TRUE, TRUE, NULL); //тип сброса- ручной
        ResetEvent(some[i]);
    }
    for (int i = 0; i < kol; i++)
    {
        Philosopher[i] = CreateThread(NULL, 0, philosopher((LPVOID)i), NULL, 0, NULL);
    }
    return 0;
}
Но он вылетает , после того , как 1-ый философ закончит. То ест , ко 2-ому дело не доходит .
Вроде всё более менее понятно , кроме пару моментов: каким образом задаются значения левой и правой вилки ? написано -
C++
1
 int left_fork = (int)arg, right_fork = left_fork+1;
- что это означает , понять не могу

Вернуться к обсуждению:
Задача о философах с использованием событий C++
0
Лучшие ответы (1)
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2014, 00:58
Готовые ответы и решения:

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

Задача об обедающих философах
Тема заезженная,но все таки. Интересует решение задачи &quot;Обедающих философов&quot;. Мне надо сделать...

Задача об обедающих философах
Доброго времени суток! Поиском пользовался, но ответа для себя не нашёл, поэтому создаю тему. ...

Многопоточность: задача об обедающих философах
Доброго времени суток! Нужно перевести код с С++ с использованием библиотеки &lt;thread&gt; и &lt;mutex&gt; на...

13
11.03.2014, 00:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.03.2014, 00:58
Помогаю со студенческими работами здесь

Многопоточность, задача об обедающих философах (семафоры)
#include &quot;iostream&quot; #include &quot;string&quot; #include &quot;windows.h&quot; #include &quot;process.h&quot; #include...

Задача об обедающих философах [C++|Linux|ARM Mitel5000]
Всем привет) Собственно несколько дней я ковыряюсь с проблемой и не знаю как её решить) Условия...

Правильная обработка событий с использованием .on()
Разрешите, пожалуйста, взрыв мозга. Есть php-страница, к ней подключается javascript внешним...

Написать код с использованием событий и делегатов
Подскажите, как правильно реализовать следующую задачу: Есть класс Man: public class Man ...

Заполнение listBox и comboBox в отдельном потоке с использованием событий
Всем привет! Я хочу сделать следующее: комбобокс (или несколько) должен заполняться элементами....

Задача (классификация событий)
Доброе утро, уже второй день не могу решить задачу: Среди товаров, продаваемых супермаркетом...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru