Форум программистов, компьютерный форум, киберфорум
Наши страницы

Как ускорить работу? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Исключения и проверка ввода http://www.cyberforum.ru/cpp-beginners/thread1032002.html
Вот прочитал вчера много всего про исключения в с++, посмотрел несколько видеоуроков, все равно никак не пойму, какой выигрыш от исключений. Допустим мне надо проверить, чтобы пользователь вводил в...
C++ Банкомат заданиеВ некотором государстве в обращении находятся банкноты определенных номиналов. Национальный банк хочет, чтобы банкомат выдавал любую запрошенную сумму при помощи минимального числа банкнот,... http://www.cyberforum.ru/cpp-beginners/thread1031997.html
Лицензия и пробный период C++
Здравствуйте, хотелось бы узнать как реализовать пробный период а так же проверку лицензионного ключа на С++. Получил лабораторную работу в которой необходимо написать программу которая бы давала...
Работа со строками в C++ C++
Возникла пара вопросов (только начинаю осваивать С++) Тут ниже задание: Задание 8 При вводе текста программа автоматически должна осуществлять перенос слов. Производится подсчет введенных...
C++ Сформировать двумерный массив. Удалить из него все строки в которых встречается заданое слово http://www.cyberforum.ru/cpp-beginners/thread1031959.html
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <limits.h> #define ROWS 100 #define COLS 100 int delete_stroka(int** arr,int N,int M); int main(void) { int sum = 0;
C++ Требуется написать программу для расчета по двум формулам Требуется написать программу для расчета по двум формулам подробнее

Показать сообщение отдельно
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61

Как ускорить работу? - C++

07.12.2013, 16:23. Просмотров 549. Ответов 10
Метки (Все метки)

Прога ещё не доработана, сейчас интересует именно графический режим, когда нажимается клавиша 1-4 один из 4-х квадратов должен подсвечиваться красным, так то оно всё работает, но что бы оно подсветило нужно ткнуть раз 5-6 по клавише, вот собственно код:
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
// sdfsdf.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <time.h>
#include <ctime>
#include <tchar.h>
#include <conio.h>
#include <sstream>
#include <locale>
#include <string>
#include <dos.h>
 
using namespace std;
 
class GroupMachine
 {
   private:
           int retrr;
           int vdet;
           int countTime;         //переменная для счета времени
           int countMachine;      //кол-во станков в группе
           int timeToWorked;      //время работы 
           int * timeToEndWork;   //время до конца работы станка
           int * countDetail;     //кол-во деталей обработаных станком
           int * modeMachine;     //режим работы станка
           int * retr;
   public:                                          
          GroupMachine ()                              
          {
 
 
              cout << "BBeDuTe KoJl-BO CTAHKOB: "; cin >> countMachine;
              cout << "BBeDuTe BpeM9l Pab0Tld: ";  cin >> timeToWorked;
              
              modeMachine = new int [countMachine];
              timeToEndWork = new int [countMachine];             
              countDetail = new int [countMachine];
              retr = new int [countMachine];
              
              for(int i = 0; i < countMachine; i++)
                  {
                      timeToEndWork[i] = timeToWorked;
                      countDetail[i] = 0;
                      modeMachine[i] = 0;
                      retr[i] = 0;
                  }
          }
          ~GroupMachine()
          {
              delete [] modeMachine; modeMachine = NULL;
              delete [] timeToEndWork; timeToEndWork = NULL;
              delete [] countDetail; countDetail = NULL;
              delete [] retr; retr = NULL;
          }
        void proc(int queueMachine)   
            { 
                vdet=0;
                retrr = 0;
                for(int i=0;i<countMachine;i++)
                retr[i] = 0;
 
                for(int i=0;i<countMachine;i++)
                 {
                     if((modeMachine[i] == 0) && (queueMachine > 0)) 
                         {
                             modeMachine[i] = 1;
                             queueMachine--;
                             retr[i]++;
                         }
                     if((timeToEndWork[i] >= 0) && (modeMachine[i] == 1))
                         timeToEndWork[i]--;
                     if(timeToEndWork[i] == 0)
                     {
                         if(modeMachine[i] == 1)
                            vdet++;
                         timeToEndWork[i] = timeToWorked;
                         countDetail[i]++;
                         modeMachine[i]=0;                      
                     }
 
                      cout << endl << "Vrem'a do konca robotu= " << 
                      timeToEndWork[i] << endl << "rejim rabotu - " << 
                      modeMachine[i] << endl << "Kol-vo obrabotanuh detalei = " << 
                      countDetail[i] << endl << queueMachine << endl<<vdet;
                     
                 }
                for(int i=0;i<countMachine;i++)
                    retrr+=retr[i];
            }
        int getretrr()
            {
                return retrr;
            }
        int getvdet()
            {
                return vdet;
            }
        void graph(int rejim)
            {
                HDC hDC = GetDC( GetConsoleWindow( ) );
                HPEN WPen = CreatePen(PS_SOLID,2, RGB(255,255,255));
                HPEN RPen = CreatePen(PS_SOLID,2, RGB(255,0,0));
                HBRUSH Red = CreateSolidBrush(RGB(255,0,0));
                HBRUSH Grean = CreateSolidBrush(RGB(0,255,0));
                HBRUSH Black = CreateSolidBrush(RGB(0,0,0));
                HFONT F=CreateFont(14,0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,_T("Arial")); 
                HPEN Grey=CreatePen(PS_SOLID,1,RGB(100,100,100));
                SetBkColor(hDC,RGB(0,0,0));
                SetTextColor(hDC,RGB(255,255,255));
                TextOut(hDC,5,460,L"Выберите группу станков с помощью цифр 1-4",56);
                SelectObject(hDC,WPen);
                SelectObject( hDC, Black);
                Rectangle(hDC,50,30,250,230);
                Rectangle(hDC,360,30,560,230);
                Rectangle(hDC,50,250,250,450);
                Rectangle(hDC,360,250,560,450);
                SelectObject(hDC,RPen);
                if (rejim==1)
                    Rectangle(hDC,50,30,250,230);
                if (rejim==2)
                    Rectangle(hDC,360,30,560,230);
                if (rejim==3)
                    Rectangle(hDC,50,250,250,450);
                if (rejim==4)
                    Rectangle(hDC,360,250,560,450);
                SelectObject(hDC,WPen);
 
 
 
            }
    
 };
 
void main()
 {
     int nomerStanka=1;
     int test;
     int qq;                        //qq - переменная для счета времени
     int *QueueMachine;             //QueueMachine - массив с очередями деталей перед каждой группой станков
     int **temp;                    //temp - создал массив для передачи состояний станков в основную программу
     QueueMachine=new int [5];   
     temp=new int *[4];     
     GroupMachine *y=new GroupMachine[4];
     time_t tm1;
     tm1 = time (NULL);
     qq=tm1;
     for(int i=0; i<4;i++)
        QueueMachine[i]=0;
     QueueMachine[0]=999999;  // перед первой группой станков очередь бесконечная
        for(;;)
            {
                system("cls");
                cout<<nomerStanka;
                for(int i=0;i<4;i++)
                {
                    (y+i)->proc(int (QueueMachine[i]));
                    y[i].graph(int (nomerStanka));
                    QueueMachine[i]-=y[i].getretrr();
                    QueueMachine[i+1]+=y[i].getvdet();                          
                }
             do
                {
                    tm1 = time (NULL);
                    if(kbhit()) 
                    if(getch()==27)
                    {
                        delete []y;
                        return;
                    }
                    if(kbhit()) 
                    if(getch()==('1'))
                    {
                        nomerStanka=1;
                    }
                    if(kbhit()) 
                    if(getch()==('2'))
                    {
                        nomerStanka=2;
                    }
                    if(kbhit()) 
                    if(getch()==('3'))
                    {
                        nomerStanka=3;
                    }
                    if(kbhit()) 
                    if(getch()==('4'))
                    {
                        nomerStanka=4;
                    }
                }
                    while(qq==tm1);
                    qq=tm1;
            }
 }
Добавлено через 11 минут
и как можно проверку на нажатие клавиши сделать отдельным методом?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru