Wednesday, April 28, 2010

na ma!!!!!!!1

#include
#include

/*structura ce contine parametrii transmisi fiecarui threrad*/
typedef struct {
int x[100]; /*vectorul */
int n; /*nr de elemente*/
} Parametri;

int x[100];
int n,a,b;
/*functia executata de primul thread*/
void* Citire(void *param) {
int i;
printf("Dati limita inferioara (a)\n");
scanf("%d",&a);
Printf("Dati limita superioara (b)\n");
scanf("%d",&b);
printf("Dati dimensiunea vectorului\n");
scanf("%d",&n);
for (i=0;i printf("Dati element pozitie %d/n", i+1);
scanf("%d", &x[i]);
}
printf("\n");
return NULL;
}
/*functia executa ala doilea thread*/
void* Afisare(void *param) {
int i;
printf("\n Elementele din vector cuprinse intre %d si %d sunt:\n", a, b);
for (i=0;i if (x[i]>=a && x[i]<=b) printf("% ",x[i]);
}
printf("\n");
return NULL;
}
/*functia executata de al treilea thread*/
void* Suma(void * param) {
int i,m =x[0];
float S=0;
for (i=0; i S=S+x[i];
if (m }
printf("\n Media elementelor este %g", S/n);
printf("\n Maximul este %d", m)
printf("\n");
return NULL;
}
int main()
{
pthread_t f1,f2,f3;
int rc,status;
pthread_attr_t attr;
Parametri sp;
/*cream primul fir*/
pthread_att_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
rc=pthread_create(&f1, &attr,&Citire,(void*)&sp);

/*ateptam termnarea primului fir de executie*/
rc=pthread_join(f1,(void**)&status);
/*cream al doilea fir*/
pthread_create(&f2, &attr, Afisare, (void*)&sp);
rc=pthread_join(f2, (void**)&status);
/*cream al treilea fir*/
pthread_create(&f3, &attr, Suma, &sp);
rc=pthread_join(f3, (void**)&status);

pthread_attr_destroy(&attr);
return 0;
}




No comments:

Adds By Google