#include #include #include #include #include #include "Tabla.h" struct Tabla *tab; struct Tabla tabel; void afis_tabla(struct Tabla* tb){ int p,q=0; printf("%s\n","TABLA PRELUCRATA"); for(p=0;p<9;p++) for(q=0;q<9;q++){ if(q==8) printf("%d\n",tb->t[p][q]); else printf("%d ",tb->t[p][q]); } }; void initmatr(struct Tabla *tb){//initzializare matrice cu 1 shi 0 int p,q,s,n=0; s=3; for(p=0;p<9;p++) for(q=0;q<9;q++){ n=(random(s) % 2); tab->t[p][q]=n; } }; int main(){ key_t key = 531982; key_t keysem =581948; int id,ids ; int x,y=0; id=shmget(key,sizeof(tabel),IPC_CREAT|0600); if (id<0){ printf("Eroare la crearea segment\n"); exit(1); sm29070 } tab =(struct Tabla*)shmat(id,0,0); if (tab==NULL){ printf("Eroare la atasharea segmentului de memorie\n"); exit(2); } tab->instante=0;//!!!!!!!!!!!! tab->nrprel=1; initmatr(tab); ids=creaza_sem(keysem); while (1){//afis matricea pana nu se mai fac prelucrari lock(ids); if (tab->nrprel==1){//daca sau efectuat prelucrari asupra matricei afis_tabla(tab); sleep(4); } else exit(1); unlock(ids); } }