доброго времени суток)
необходима помощь с программой...
задание.
25. В цехе имеется один станок для резания. После обработки на станке заготовки поступают на
m линий.В каждой линии 4 станка. Известно время обработки заготовки на каждом станке. Задается скорость резания заготовок для основного станка
(V) (количество заготовок в единицу времени). Отображать сколько времени осталось до окончания обработки для каждого станка
(tc), сколько сделано деталей на каждой линии
(k). Детали распределяются после резания между линиями равномерно.
(р) - очередь станка, для накопления деталей.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>
#include <dos.h>
#include <conio.h>
#include <IOSTREAM.H>
class stanok {
int t0, tc, p, j, g ;
public:
stanok (){
cout<<"\n stanok "<<"\nVvedite vremya rezaniya- ";
cin>>t0;
p=0;
tc=0;
g=0;
}
void change_p(){ p++; }
void CH_tc() {
if(tc>0) tc--;
}
void print() {cout<<"\n tc="<<tc<<"\tP= "<<p<<"\tt0= "<<t0;}
void prov_t();
int g_p();
};
int stanok :: g_p(){
if(tc==0) if(g) return 1;
return 0;
}
void stanok :: prov_t() {
if(p>0){
if(tc<1) {tc=t0; p--; g=1;}
}
else if(tc==0) g=0;
}
class Pline {
int n,
k,
x,
y;
stanok *St;
public:
Pline (){
n=4;
St = new stanok[n];
k=0;
}
void toline(){
St[0].change_p();
}
void change_tc();
void draw();
void prov();
int get_p(int p);
void res_p();
};
void Pline :: res_p(){
for(int i=0;i<n-1;i++) {
int r=St[i].g_p();
if(r)St[i+1].change_p();
}
k=k+St[n-1].g_p();
}
void Pline :: change_tc(){ for(int i=0;i<n;i++) St[i].CH_tc();}
void Pline :: draw(){
for(int i=0;i<n;i++) St[i].print();
cout<<"\nk= "<<k;
}
void Pline :: prov(){
for(int i=0;i<n;i++) St[i].prov_t();
}
void main()
{
clrscr();
struct time tm1, tm2;
float V;
cout<<"\nVvedite scorost' rezaniya osnovnogo stanka - ";
cin>>V;
float D=0;
int l=0,
t=0,
q=1;
cout<<"\n Vvedite kol-vo liniy - ";
int m;
cin>>m;
Pline *L=new Pline[m];
clrscr();
do{
cout<<"\npusk - press Enter\nexit - ESC \n";
char c = getch();
if(c == 13 ) q=0;
if(c ==27) return;
}while(q);
gettime(&tm1);
while(1)
{
clrscr();
cout<<"\nt= "<<t;
for(int i=0;i<m;i++){
L[i].draw();
cout<<"\n\n------------\n";
}
do
{
gettime(&tm2);
if(kbhit()) if(getch()==27)
{
return;
}
}while(tm1.ti_sec==tm2.ti_sec);
tm1=tm2;
t++;
D=D+V;
int Z=D;
D=D-Z;
while(Z>0){
L[l].toline();
Z--;
l++;
if(l>m-1 ) l=0;
}
for( i=0; i<m; i++) {
L[i].res_p();
L[i].prov();
L[i].change_tc();
}
}
}
проблема с передачей заготовки от одного станка к следующему, то как я реализовал работает не точно, не досчитываюсь деталей...
помогите пожалуйста)