P
pereges
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(void)
{
unsigned long int numpoints;
printf("Enter num of points\n");
scanf("%lu", &numpoints);
unsigned long int numpointsx = sqrt((double)numpoints);
unsigned long int numpointsy = sqrt((double)numpoints);
numpoints = numpointsx * numpointsy;
unsigned long int i = 0;
typedef struct point
{
float x, y;
} point;
point *pointinarray;
pointinarray = calloc(sizeof(point), numpoints);
float xlength, ylength;
xlength = ylength = 20;
float xmin, ymin;
xmin = ymin = -10;
float xmax, ymax;
xmax = ymax = 10;
float xsize = xlength /( numpointsx-1);
float ysize = ylength / (numpointsy-1);
printf("%u\n", numpoints);
unsigned long int xi, yi;
/* I'm confident the error is here */
for ( yi = 0; yi <= numpointsy; ++yi)
{
for (xi = 0; xi <= numpointsx; ++xi)
{
pointinarray.x = xmin + xi * xsize;
pointinarray.y = ymin + yi * ysize;
++i;
}
}
printf("i: %lu xmax: %f ymax: %f\n",i, pointinarray[i-1].x,
pointinarray[i-1].y);
return 0;
}
The program is working for anything upto 60000 or so but fails for
anything greater eg. 100000
#include <math.h>
#include <stdlib.h>
int main(void)
{
unsigned long int numpoints;
printf("Enter num of points\n");
scanf("%lu", &numpoints);
unsigned long int numpointsx = sqrt((double)numpoints);
unsigned long int numpointsy = sqrt((double)numpoints);
numpoints = numpointsx * numpointsy;
unsigned long int i = 0;
typedef struct point
{
float x, y;
} point;
point *pointinarray;
pointinarray = calloc(sizeof(point), numpoints);
float xlength, ylength;
xlength = ylength = 20;
float xmin, ymin;
xmin = ymin = -10;
float xmax, ymax;
xmax = ymax = 10;
float xsize = xlength /( numpointsx-1);
float ysize = ylength / (numpointsy-1);
printf("%u\n", numpoints);
unsigned long int xi, yi;
/* I'm confident the error is here */
for ( yi = 0; yi <= numpointsy; ++yi)
{
for (xi = 0; xi <= numpointsx; ++xi)
{
pointinarray.x = xmin + xi * xsize;
pointinarray.y = ymin + yi * ysize;
++i;
}
}
printf("i: %lu xmax: %f ymax: %f\n",i, pointinarray[i-1].x,
pointinarray[i-1].y);
return 0;
}
The program is working for anything upto 60000 or so but fails for
anything greater eg. 100000