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

Что то типа goto - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Описать класс "Массив" http://www.cyberforum.ru/cpp-beginners/thread642722.html
Язык С++ 1.Описать класс "Массив". Методы массива: конструктор с одним параметром - длина массива; ввод и вывод элементов массива; проверка, является ли массив упорядоченным по убыванию; проверка, является ли массив упорядоченным по возрастанию; включение произвольного элемента в массив с сохранением упорядоченности. 2.Объявить массив, ввести значения, проиллюстрировать...
C++ Сортировка вставками Где-то ошибка в цикле... помогите) ... int array = {3, 2, 1}, min = 0, a = 0, b = 0; ... for(a = 1; a < size; ++a); { http://www.cyberforum.ru/cpp-beginners/thread642710.html
C++ Ошибка. Переопределение параметров в функции
Добрый вечер всем! Такая задача: Необходимо составить программу для систем счисления (от 2 до 36) пользователь вводит число в десятичной системе и вводит номер системы. например: число 350 в 8-ричной системе. Программу надо написать через функцию. Сначала я написал через обычную пустую функцию (одним куском кода)-ВСЁ ОТЛИЧНО РАБОТАЕТ. Необходимо написать так что бы сначала шол код...
C++ что означает данная строчка? &operator
что это означает? (Tabl это класс) friend ofstream &operator << ( ofstream &outf, Tabl MyTabl ) я так понимаю объявляется дружественная функция перегрузки оператора ввода? можете еще объяснить что происходит ( ofstream &outf, Tabl MyTabl ) понимаю что создается объект класса Tabl но для чего? что значит ofstream &outf как это все взаимодействует? Заранее огромное Спасибо!
C++ Сравнение трех чисел ограниченными средствами http://www.cyberforum.ru/cpp-beginners/thread642687.html
У Дейтела после первой главы, где рассматриваются основы процедурного программирования, есть небольшой блок задач для самостоятельного решения. Среди них - написать программу, запрашивающую у пользователя 3 не одинаковых целых числа, а после выдающей наибольшее и наименьшее из них ( чуть далее следует схожая задача на пять чисел). Пользоваться можно только изученным до этого материалом, а значит,...
C++ Поиск анаграмм в словаре Учу С++ по учебнику, там есть задача по написанию программы для поиска анаграмм(слов из одинаковых букв) и выводу их на экран. Столкнулся с проблемой: не выводится ничего. Судя по тому что при пошаговом прогоне отрицательно проверяется строка 30 проблема в вводе, но где именно я так и не понял :( #include <iostream> #include <vector> #include <fstream> #include <map> #include <algorithm>... подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
27.08.2012, 10:55     Что то типа goto
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Egor138, как вариант запускай thread-нить нужной функции (параллель работу).
- Ниже вариация на эту тему
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
144
145
146
147
148
149
150
151
152
153
#include <vector>
#include <iostream>
#include <process.h>
#include <windows.h>
using namespace std;
 
typedef struct
{
    int ThreadNum;
    int CallFlag;
}THREAD_PARAMS;
 
class CThreadList
{
private :
    int iQUANT;
    int StopFlag;
    CRITICAL_SECTION cs;//Тут потоки будут хранить сови данные
    vector<THREAD_PARAMS> vec;//Вектор параметров потоков
    //Кто разбирается - поймёт, что за грабли тут обошёл
    static void ThreadStart(PVOID lpThis)
    {
        CThreadList * pThis = (CThreadList *)lpThis;
        int iThread = (pThis->GetThreadCount() - 1);
        pThis->ThreadProc(&iThread);
        _endthread();
    }
public :
    CThreadList()
    {
        StopFlag = 0;
        InitializeCriticalSection(&cs);
    }
    ~CThreadList()
    {
        SetStopFlag(1);//Устанавливаем флаг окнчания работы 
        Sleep(iQUANT);//Даём время нитям завершить свою работу
        DeleteCriticalSection(&cs);
    }
    
    void SetQUANT(int _iQUANT);
    void SetStopFlag(int _StopFlag);
    int  GetThreadCount();
    int  GetStopFlag();
    THREAD_PARAMS GetThreadParams(int iThread);
    void AddThread  ();
    void ThreadProc(PVOID lpParams);
    void CallThread(int iThread);
};
 
int main()
{
    int iChoise = 0;
    int iThread = -1;
    CThreadList pList;
    pList.SetQUANT(100);
    while(!pList.GetStopFlag())
    {
        cout<<"1  - ADD  THREAD\n";
        cout<<"2  - CALL THREAD\n";
        cout<<"0  - EXIT\n";
        cin>>iChoise;
        switch(iChoise)
        {
        case 0:
            pList.SetStopFlag(1);
            break;
        case 1:pList.AddThread();break;
        case 2:
            if(!pList.GetThreadCount())
                cout<<"Thread list is empty\n";
            else
            {
                if(iThread + 1 < pList.GetThreadCount())
                    iThread = iThread + 1;
                else
                    iThread = 0;
                pList.CallThread(iThread);
            }
            break;
        default:
            cout<<"Unsupported value\n";
            break;
        }
    }
    return 0;
}
 
void CThreadList::SetQUANT(int _iQUANT)
{
    EnterCriticalSection(&cs);
    iQUANT = _iQUANT;
    LeaveCriticalSection(&cs);
}
 
void CThreadList::SetStopFlag(int _StopFlag)
{
    EnterCriticalSection(&cs);
    StopFlag = _StopFlag;
    LeaveCriticalSection(&cs);
}
 
int CThreadList::GetThreadCount()
{
    return vec.size();
}
 
int CThreadList::GetStopFlag()
{
    return StopFlag;
}
 
THREAD_PARAMS CThreadList::GetThreadParams(int iThread)
{
    THREAD_PARAMS pParam = {0};
    pParam.ThreadNum     = -1;
    if(iThread < GetThreadCount())
        pParam = vec.at(iThread);
    return pParam;
}
 
void CThreadList::AddThread ()
{
    THREAD_PARAMS pParam = {0};
    pParam.ThreadNum = GetThreadCount();
    pParam.CallFlag  = 0;
    vec.push_back(pParam);
    _beginthread(ThreadStart,0, this);
}
 
void CThreadList::ThreadProc (PVOID lpParams)
{
    int iThread = *((int *)lpParams);
    while(!StopFlag)
    {
        EnterCriticalSection(&cs);
        if(vec.at(iThread).CallFlag)
        {
            vec.at(iThread).CallFlag = 0;
            cout<<"[Thread # "<<vec.at(iThread).ThreadNum<<" is Called]\n";
        }
        LeaveCriticalSection(&cs);
        if(!StopFlag)
            Sleep(iQUANT);
    }
}
 
void CThreadList::CallThread(int iThread)
{
    EnterCriticalSection(&cs);
    vec.at(iThread).CallFlag = 1;
    LeaveCriticalSection(&cs);
}
Миниатюры
Что то типа goto  
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru