Witam, mam problem ponieważ napisałem taki program który ma liczyć sumę szeregu przy użyciu dowolnej liczby wątków jednakże mój program działa niepoprawnie ponieważ wynik mnoży przez ilość wątków., Prosze o pomoc w tej sprawie.(program ma być napisany bez użycia struktur)
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <pthread.h>
#define MAXL 100000000
#define LICZBAW 2
double suma_tab[LICZBAW];
double start = 0;
double koniec = MAXL/LICZBAW;
double suma(int p,int k) {
double s=0;
int i;
for (i=p;i<=k;i++) s=s+(1.0/i)*(1.0/i);
return s;
}
void* p (void* l) {
long n = (long)l;
double s;
s=suma(start+1,koniec);
start = koniec;
koniec += koniec;
suma_tab[n] += s;
return 0;
}
int main () {
pthread_t w[LICZBAW];
long i;
for(i=0; i<LICZBAW; i++){
pthread_create(&w[i], 0, p, (void*)i);
}
for(i=0; i<LICZBAW; i++)
{
pthread_join(w[i], NULL);
}
double sum = 0;
for ( i = 0; i < LICZBAW; i++) {
sum += suma_tab[i];
}
printf("Suma: %.15lf\n", sum);
return 0;
}