Falha de segmentação (iamgem do nucleo gravada)

1. Falha de segmentação (iamgem do nucleo gravada)

Daniel Caldeira
daneilfmc777

(usa Outra)

Enviado em 29/05/2017 - 14:42h

Boa tarde, estou tentando criar um pequeno programa e aparece esse erro do assunto! Por favor me ajudem! O codigo que estou a usar é o seguinte, obrigado:


#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

//Função que calcula o pi

void*calc_pi(void*parameters)
{
//inicialização das variaveis

double npoints=100000000;
double x,y;
int i, circle_count=0;
double D; //diametro do circulo
double pi;

for (i=0; i < npoints; i++)
{
x=(double)abs(rand())/RAND_MAX;
y=(double)abs(rand())/RAND_MAX;
D=sqrt(pow((x-0.5),2)+pow((y-0.5),2));


//confirmar pontos dentro do circulo

if (D<=0.5)
{


pi=(double)4*circle_count/npoints;
printf("pi=%f\n",pi);
circle_count++;
return NULL;
}

}

}


int main()

{
//iniciar variaveis

double npoints=100000000;
double x,y;
int circle_count=0;
int i = 0 ;
double D;
double pi;
int numerothreads=5;
int numpontoscirculo;
double*npontos_circulo;
double oi=npoints/numerothreads;

//id da thread

pthread_t thread_id;

//criar uma thread que vai correr a funcao calc_pi
pthread_create(&thread_id, NULL, &calc_pi,&oi);


//fazer funçao join para receber os dados threads, criar funçao join para cada thread

pthread_join(thread_id,(void*)&npontos_circulo);
printf("O numero de pontos dentro do circulo:\n");

//fazer um ciclo para chamar as threads


for(i=0;i<5;i++)
{
printf("%lf\n",*(npontos_circulo+i));
}
return 0;



}


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts