Wednesday, April 28, 2010

pt noi

#include
#include

//structura cu parametrii fiecarui fir

typedef struct {
int x[30]; // stocare vector
int n; // numar maxim de elemente
} Parametri;

int x[30];
int n;

///// Functia primului fir
///// CITIREA

void* Citire(void *param )
{
int i; // contor

printf("\n Dati numaru de elemente a vectorului: ");
scanf("%d",&n);

for (i=0;i {
printf("\n Dati element: %d=", i+1);
scanf("%d", &x[i]);
}

printf("\n");

return NULL;
}


//// functia ce va fi executata de cel de-al doilea fir.\
//// SORTAREA SI AFISAREA

void* Afisare(void )
{

int i, aux;

printf("\n Sortare vector ... \n");

for (i=0;i {
if x[i]>x[i+1]
{
aux=x[i];
x[x]=x[i+1];
x[i+1]=aux;
}

printf("\n Sortare incheiata. ");

printf("\n Afisare - vectorul este :\n");
for (i=0;i {
printf(" %d ",x[i]);
}
printf("\n");

return NULL;
}


///// functia efectuata de firul 3
///// media valorilor

void* Suma(void * param)
{
int i,med,a,b,nr;
long S;
S=0;

for (i=0;i S=S+x[i];

printf("\n Suma elementelor este %ld",S);

med=S/n;

printf("\n Media elem. vectorului este: %d ",med);
printf("\n Dati intervalele a, b ");
printf("\n a= ");
scanf("%d", &a);
printf("\n b=");
scanf("%d", &b);
for (i=0;i if ((x[i]>=a) && (x[i]<=b))
nr++;
printf("\n in intervalul [a,b], sunt%ld",S);

return NULL;
}


int main()
{

pthread_t f1,f2,f3; //declararea firelor

int rc,status;

pthread_attr_t attr;
Parametri sp;

//// crearea primului fir

pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
rc = pthread_create(&f1, &attr, &Citire, (void *) &sp);

/// se asteapta incheierea executiei primului fir

pthread_attr_destroy(&attr);

rc=pthread_join(f1, (void **)&status);

///se creaza al doilea fir

pthread_create(&f2, &attr, Afisare, (void *) &sp);
rc=pthread_join(f2, (void **)&status);

/// se creaza al treilea fir

pthread_create(&f3, &attr, Suma, &sp);
rc=pthread_join(f3, (void **)&status);


return 0;
}

No comments:

Adds By Google