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

Не могу понять как передать - C++

Восстановить пароль Регистрация
 
 
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
05.12.2013, 14:25     Не могу понять как передать #1
есть код
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
#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
 {
     int qq, N, *vr, ssv, *kkod, *rs;
 public:
     groupmachine ()
        {
            cout<<"BBeDuTe BpeM9l Pab0Tld";
            cin>>ssv;
            cout<<"BBeDuTe KoJl-BO CTAHKOB";
            cin>>N;
            rs=new int [N];
            vr=new int [N];
            kkod=new int [N];
            for(int i=0;i<N;i++)
                {vr[i]=ssv;kkod[i]=0;rs[i]=0;}
        }
        int zad(int ossd)
            { 
                        if(kbhit()) 
                            if(getch()==27)
                                {
                                    return 0;
                                }
                        
                            for(int i=0;i<N;i++)
                                {
                                    if((rs[i]==0)&&(ossd>0)) {rs[i]=1;}
                                    if((vr[i]>=0)&&(rs[i]==1))vr[i]--;
                                    if(vr[i]==-1){vr[i]=ssv; kkod[i]++; rs[i]=0;}
                                    cout<<endl<<"Vrem'a do konca robotu= "<<vr[i]<<endl<<"rejim rabotu - "<<rs[i]<<endl<<"Kol-vo obrabotanuh detalei = "<<kkod[i]<<endl<<ossd<<endl;
                                return rs[i];}
            };
 private:
     groupmachine *nextPtr;
 };
 
 void main()
 {
     int qq, *osd, *f;
     osd=new int [5];
     f=new int [4];
     groupmachine *y=new groupmachine[4];
     time_t tm1;
     tm1 = time (NULL);
     qq=tm1;
     for(int i=0; i<4;i++)
                osd[i]=0;
osd[0]=999999;
     for(;;)
     {system("cls");
 
         for(int i=0;i<4;i++)
         {f[i]=(y+i)->zad(int (osd[i]));
         if((f[i]==0)&&(osd[i]>0)) {osd[i+1]++; osd[i]--;}
         }
 
         do
            {
                tm1 = time (NULL);
                if(kbhit()) 
                if(getch()==27)
                    {
                        delete []y;
                        return;
                    }
            }while(qq==tm1);
            qq=tm1;
             
                  
 
     }
 }
он создает 4 станка, у каждого станка есть очередь, состояние и кол-во обработанных деталей. Очередь пополняется, когда предыдущий станок сделал деталь. Но суть в том, что должно быть не 4 станка, а 4 группы станков, что нужно сделать, что бы было 4 группы. Как нужно возвращать значение и куда? =( помогите плиз=(
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
05.12.2013, 14:48     Не могу понять как передать #2
В этой каше кода сложно разобраться. Совет, используйте осмысленные имена: переменных, массивов и т.д.
т.к. массив с именем f[] мало о чем говорит или как узнать что такое qq=tm1;?

Отредактируйте текст программы возможно тогда кто-то Вам поможет.
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
05.12.2013, 15:21  [ТС]     Не могу понять как передать #3
я написал коментарии с объяснениями
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
#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
 {
     int qq, N, *vr, ssv, *kolvo_det, *sost_stanka;//qq - переменная для счета времени, N - кол-во станков в группе,
 public:                                           //vr - время до конца работы станка, kolvo_det - кол-во деталей обработаных станком
     groupmachine ()                               //sost_stanka - режим работы станка
        {
            cout<<"BBeDuTe BpeM9l Pab0Tld";
            cin>>ssv;
            cout<<"BBeDuTe KoJl-BO CTAHKOB";
            cin>>N;
            sost_stanka=new int [N];
            vr=new int [N];             
            kolvo_det=new int [N];
            for(int i=0;i<N;i++)
                {vr[i]=ssv;kolvo_det[i]=0;sost_stanka[i]=0;}
        }
        int zad(int ossd)   //ossd - очередь перед группой станков
            { 
                        if(kbhit()) 
                            if(getch()==27)
                                {
                                    return 0;
                                }
                        
                            for(int i=0;i<N;i++)
                                {
                                    if((sost_stanka[i]==0)&&(ossd>0)) {sost_stanka[i]=1;}
                                    if((vr[i]>=0)&&(sost_stanka[i]==1))vr[i]--;
                                    if(vr[i]==-1){vr[i]=ssv; kolvo_det[i]++; sost_stanka[i]=0;}
                                    cout<<endl<<"Vrem'a do konca robotu= "<<vr[i]<<endl<<"rejim rabotu - "<<sost_stanka[i]<<endl<<"Kol-vo obrabotanuh detalei = "<<kolvo_det[i]<<endl<<ossd<<endl;
                                return sost_stanka[i];}
            };
 };
 
 void main()
 {
     int qq, *osd, *f;  //qq - переменная для счета времени
     osd=new int [5];   //osd - массив с очередями деталей перед каждой группой станков
     f=new int [4];     //f - создал массив для передачи состояний станков в основную программу
     groupmachine *y=new groupmachine[4];
     time_t tm1;
     tm1 = time (NULL);
     qq=tm1;
     for(int i=0; i<4;i++)
                osd[i]=0;
osd[0]=999999;  // перед первой группой станков очередь бесконечная
     for(;;)
     {system("cls");
 
         for(int i=0;i<4;i++)
         {f[i]=(y+i)->zad(int (osd[i]));  //возвращаемое значение из функции присваиваю элементу массива
         if((f[i]==0)&&(osd[i]>0)) {osd[i+1]++; osd[i]--;}
         }
 
         do
            {
                tm1 = time (NULL);
                if(kbhit()) 
                if(getch()==27)
                    {
                        delete []y;
                        return;
                    }
            }while(qq==tm1);
            qq=tm1;
             
                  
 
     }
 }
Добавлено через 15 минут
Я приблизительно понял суть проблемы, с функции нужно возвращать не отдельный элемент массива, а весь массив целиком, а в основной программе создать массив из указателей на 4 массива, в которые будут передаваться возвращаемые значения с функции.
Так ведь можно сделать?
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
05.12.2013, 16:02     Не могу понять как передать #4
Пример более мене форматированного кода
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
#include <iostream>
 
using std::cout;
using std::cin;
using std::endl;
 
class GroupMachine
 {
   private:
           int countTime         //ïåðåìåГ*Г*Г*Гї äëÿ Г±Г·ГҐГІГ* âðåìåГ*ГЁ
           int countMachine      //êîë-ГўГ® Г±ГІГ*Г*êîâ Гў ãðóïïå
           int timeToWorked      //âðåìÿ Г°Г*áîòû 
           int * timeToEndWork   //âðåìÿ äî ГЄГ®Г*Г¶Г* Г°Г*áîòû Г±ГІГ*Г*ГЄГ*
           int * countDetail     //êîë-ГўГ® äåòГ*ëåé îáðГ*áîòГ*Г*ûõ Г±ГІГ*Г*êîì
           int * modeMachine;    // ðåæèì Г°Г*áîòû Г±ГІГ*Г*ГЄГ*
   public:                                          
          GroupMachine ()                              
          {
              cout << "BBeDuTe BpeM9l Pab0Tld: ";  cin >> timeToWorked;
              cout << "BBeDuTe KoJl-BO CTAHKOB: "; cin >> countMachine;
              
              modeMachine = new int [countMachine];
              timeToEndWork = new int [countMachine];             
              countDetail = new int [countMachine];
              
              for(int i = 0; i < countMachine; i++)
                  {
                      timeToEndWork[i] = timeToWorked;
                      countDetail[i] = 0;
                      modeMachine[i] = 0;
                  }
          }
          ~GroupMachine()
          {
              delete [] modeMachine; modeMachine = NULL;
              delete [] timeToEndWork; timeToEndWork = NULL;
              delete [] countDetail; countDetail = NULL;
              
          }
        int zad(int queueMachine)   
            { 
                if(kbhit()) 
                 if(getch()==27)
                    return 0;
                    
                for(int i=0;i<N;i++)
                 {
                     if((modeMachine[i] == 0) && (queueMachine > 0)) 
                         modeMachine[i] = 1;
                     if((timeToEndWork[i] >= 0) && (modeMachine[i] == 1))
                         timeToEndWork[i]--;
                     if(timeToEndWork[i] == -1)
                     {
                        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;
                     return modeMachine[i];
                 }
            }
 };
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
05.12.2013, 17:26  [ТС]     Не могу понять как передать #5
Спасибо за редактирование =), но мне нужно как то с класса передавать массив в программу и там его редактировать, я вот и не могу понять как(

Добавлено через 53 минуты
я не пойму как передать
C++
1
modeMachine;
в
C++
1
temp
мне нужно передать весь массив =(
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
// 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 countTime;         //переменная для счета времени
           int countMachine;      //кол-во станков в группе
           int timeToWorked;      //время работы 
           int * timeToEndWork;   //время до конца работы станка
           int * countDetail;     //кол-во деталей обработаных станком
           int * modeMachine;     //режим работы станка
   public:                                          
          GroupMachine ()                              
          {
              cout << "BBeDuTe BpeM9l Pab0Tld: ";  cin >> timeToWorked;
              cout << "BBeDuTe KoJl-BO CTAHKOB: "; cin >> countMachine;
              
              modeMachine = new int [countMachine];
              timeToEndWork = new int [countMachine];             
              countDetail = new int [countMachine];
              
              for(int i = 0; i < countMachine; i++)
                  {
                      timeToEndWork[i] = timeToWorked;
                      countDetail[i] = 0;
                      modeMachine[i] = 0;
                  }
          }
          ~GroupMachine()
          {
              delete [] modeMachine; modeMachine = NULL;
              delete [] timeToEndWork; timeToEndWork = NULL;
              delete [] countDetail; countDetail = NULL;
              
          }
        int* zad(int queueMachine)   
            { 
                if(kbhit()) 
                 if(getch()==27)
                    return 0;
                    
                for(int i=0;i<countMachine;i++)
                 {
                     if((modeMachine[i] == 0) && (queueMachine > 0)) 
                         modeMachine[i] = 1;
                     if((timeToEndWork[i] >= 0) && (modeMachine[i] == 1))
                         timeToEndWork[i]--;
                     if(timeToEndWork[i] == -1)
                     {
                        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;
                     
                 }
                return modeMachine;
            }
 };
 
void main()
 {
     int qq, *QueueMachine, **temp;  //qq - переменная для счета времени
     QueueMachine=new int [5];   //osd - массив с очередями деталей перед каждой группой станков
     temp=new int* [4];     //f - создал массив для передачи состояний станков в основную программу
     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");
                for(int i=0;i<4;i++)
                {
                    temp[i]=(y+i)->zad(int (QueueMachine[i])); cout<<*temp[i]+1; //возвращаемое значение из функции присваиваю элементу массива
        
                    if((*temp[i]==0)&&(QueueMachine[i]>0))
                        {
                            QueueMachine[i+1]++; QueueMachine[i]--;
                        }
                }
             do
                {
                    tm1 = time (NULL);
                    if(kbhit()) 
                    if(getch()==27)
                    {
                        delete []y;
                        return;
                    }
                }
                    while(qq==tm1);
                    qq=tm1;
             
                  
 
            }
 }
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
05.12.2013, 18:39     Не могу понять как передать #6
Можно добавить в класс GroupMachine метод, который копирует данные в modeMachine:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class GroupMachine
{
    // ... 
    // ...
public:                                          
    void SetMode( int a[] );
};
 
void GroupMachine::SetMode( int a[] )
{
    for(int i = 0; i < countMachine; i++)
    {
        modeMachine[i] = a[i];
    }
}
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
05.12.2013, 22:35  [ТС]     Не могу понять как передать #7
Я не совсем понимаю как это сделать(((

Добавлено через 41 минуту
я уже третий день сижу с этой проблемой(((
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.12.2013, 00:52     Не могу понять как передать #8
Цитата Сообщение от Delacroic Посмотреть сообщение
я не пойму как передать
modeMachine; в
temp
Если бы modeMachine был public, то так:
C++
1
2
for (int i = 0; i < 4; ++i)
     temp[i] = y[i].modeMachine;
Т.к. private, то добавьте в класс публичный метод получения modeMachine (getmodeMachine()), и тогда так:
C++
1
2
for (int i = 0; i < 4; ++i)
     temp[i] = y[i].getmodeMachine();
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
06.12.2013, 01:24  [ТС]     Не могу понять как передать #9
У меня всё равно не получается >_<
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.12.2013, 02:03     Не могу понять как передать #10
Цитата Сообщение от Delacroic Посмотреть сообщение
У меня всё равно не получается
Что должно получиться?
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
06.12.2013, 02:15  [ТС]     Не могу понять как передать #11
у меня передает только первый элемент с каждого массива, а должно передавать весь массив=(
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.12.2013, 02:15     Не могу понять как передать #12
Передаёт указатель на начало массива, а дальше через индексы (temp[i][j]). temp - это же указатель на указатель.
C++
1
(j = 0; j < temp[i].countMachine; ++j)
Показывайте как сделали.
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
06.12.2013, 02:18  [ТС]     Не могу понять как передать #13
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
// 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 countTime;         //переменная для счета времени
           int countMachine;      //кол-во станков в группе
           int timeToWorked;      //время работы 
           int * timeToEndWork;   //время до конца работы станка
           int * countDetail;     //кол-во деталей обработаных станком
           int * modeMachine;     //режим работы станка
   public:                                          
          GroupMachine ()                              
          {
 
              cout << "BBeDuTe BpeM9l Pab0Tld: ";  cin >> timeToWorked;
              cout << "BBeDuTe KoJl-BO CTAHKOB: "; cin >> countMachine;
              
              modeMachine = new int [countMachine];
              timeToEndWork = new int [countMachine];             
              countDetail = new int [countMachine];
              
              for(int i = 0; i < countMachine; i++)
                  {
                      timeToEndWork[i] = timeToWorked;
                      countDetail[i] = 0;
                      modeMachine[i] = 0;
                  }
          }
          ~GroupMachine()
          {
              delete [] modeMachine; modeMachine = NULL;
              delete [] timeToEndWork; timeToEndWork = NULL;
              delete [] countDetail; countDetail = NULL;
              
          }
        int* zad(int queueMachine)   
            { 
                if(kbhit()) 
                 if(getch()==27)
                    return 0;
                    
                for(int i=0;i<countMachine;i++)
                 {
                     if((modeMachine[i] == 0) && (queueMachine > 0)) 
                         modeMachine[i] = 1;
                     if((timeToEndWork[i] >= 0) && (modeMachine[i] == 1))
                         timeToEndWork[i]--;
                     if(timeToEndWork[i] == -1)
                     {
                        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;
                     
                 }
                return modeMachine;
            }
        int getmodeMachine()
        {
            modeMachine;return *modeMachine;
        }
 };
 
void main()
 {
     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");
                for(int i=0;i<4;i++)
                {
                    (y+i)->zad(int (QueueMachine[i]));
                    for (int i = 0; i < 4; ++i)
                    {temp[i] = y[i].getmodeMachine();cout<<temp[i];}
 
                    if((temp[i]==0)&&(QueueMachine[i]>0))
                        {
                            QueueMachine[i+1]++; QueueMachine[i]--;
                        }
                }
             do
                {
                    tm1 = time (NULL);
                    if(kbhit()) 
                    if(getch()==27)
                    {
                        delete []y;
                        return;
                    }
                }
                    while(qq==tm1);
                    qq=tm1;
             
                  
 
            }
 }
вот так
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.12.2013, 02:22     Не могу понять как передать #14
Добавлено через 1 минуту
Это что?
C++
1
2
3
4
int getmodeMachine()
{
     modeMachine;return *modeMachine;
}
Добавлено через 1 минуту
C++
1
2
3
4
int* getmodeMachine()
{
     return modeMachine;
}
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
06.12.2013, 02:22  [ТС]     Не могу понять как передать #15
Это я пытался вернуть значение в осн программу
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.12.2013, 02:23     Не могу понять как передать #16
И где это?
C++
1
2
for (int i = 0; i < 4; ++i)
   temp[i] = y[i].getmodeMachine();
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
06.12.2013, 02:25  [ТС]     Не могу понять как передать #17
в основной программе
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.12.2013, 02:32     Не могу понять как передать #18
Зачем тип temp изменили? Кто-то говорил?
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
06.12.2013, 02:35  [ТС]     Не могу понять как передать #19
пытался по другому сделать, сейчас назад поставил указатель на указатель
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2013, 02:56     Не могу понять как передать
Еще ссылки по теме:

Не могу понять, как исправить ошибку C++
C++ Не могу понять, как правильно передать указатель на объект в файл
Не могу понять как прочитать файл C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.12.2013, 02:56     Не могу понять как передать #20
Что вы делаете в main() разбираться времени нет, но может быть так сообразите, как нужно сделать:
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
#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 countTime;         //переменная для счета времени
           int countMachine;      //кол-во станков в группе
           int timeToWorked;      //время работы 
           int * timeToEndWork;   //время до конца работы станка
           int * countDetail;     //кол-во деталей обработаных станком
           int * modeMachine;     //режим работы станка
   public:                                          
          GroupMachine ()                              
          {
 
              cout << "BBeDuTe BpeM9l Pab0Tld: ";  cin >> timeToWorked;
              cout << "BBeDuTe KoJl-BO CTAHKOB: "; cin >> countMachine;
              
              modeMachine = new int [countMachine];
              timeToEndWork = new int [countMachine];             
              countDetail = new int [countMachine];
              
              for(int i = 0; i < countMachine; i++)
                {
                    timeToEndWork[i] = timeToWorked;
                    countDetail[i] = 0;
                    modeMachine[i] = 0;
                }
          }
          ~GroupMachine()
          {
              delete [] modeMachine; modeMachine = NULL;
              delete [] timeToEndWork; timeToEndWork = NULL;
              delete [] countDetail; countDetail = NULL;
              
          }
        int* zad(int queueMachine)   
            { 
                if(kbhit()) 
                 if(getch()==27)
                    return 0;
                    
                for(int i=0;i<countMachine;i++)
                 {
                     if((modeMachine[i] == 0) && (queueMachine > 0)) 
                         modeMachine[i] = 1;
                     if((timeToEndWork[i] >= 0) && (modeMachine[i] == 1))
                         timeToEndWork[i]--;
                     if(timeToEndWork[i] == -1)
                     {
                        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;
                     
                 }
                return modeMachine;
            }
        int* getmodeMachine()
        {
            return modeMachine;
        }
 
        int getcountMachine()
        {
            return countMachine;
        }
 };
 
void main()
 {
     int *test;
     int qq;                        //qq - переменная для счета времени
     int *QueueMachine;             //QueueMachine - массив с очередями деталей перед каждой группой станков
     int **temp;                 //temp - создал массив для передачи состояний станков в основную программу
     QueueMachine = new int [5];   
     
     temp = new int* [4];     
     GroupMachine *y = new GroupMachine[4];
 
     for (int i = 0; i < 4; ++i)         
         temp[i] = y[i].getmodeMachine();
 
     for (int i = 0; i < 4; ++i) // вывод данных из modeMachine
     {
         for (int j = 0; j < y[i].getcountMachine(); ++j)
                cout << temp[i][j] << ' ';
         cout << endl;
     }
...
Yandex
Объявления
06.12.2013, 02:56     Не могу понять как передать
Ответ Создать тему
Опции темы

Текущее время: 09:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru