分段故障(记录核图像)

时间:2017-05-31 16:17:38

标签: c linux

这是我从shcool的项目,我有这个错误,不能弄明白!如果你能帮助我真的很感激! 这段代码应该创建一个圆形图像,里面有随机点,创建一个正方形!我想我需要用malloc解决这个问题,但我不明白怎么做!

#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 
    enter code here
    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;
}

0 个答案:

没有答案