Re: Why this program fails for larger input value ?
- From: santosh <santosh.k83@xxxxxxxxx>
- Date: Wed, 30 Apr 2008 01:42:15 +0530
pereges wrote:
#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);
You want the %lu conversion specifier here.
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[i].x = xmin + xi * xsize;
pointinarray[i].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
Why don't you put in a series of printf statements to print out the
values of your variables at selected points in the program. Then you
might be able to narrow down the point of failure. Alternatively you
could step through the program in a debugger.
.
- References:
- Why this program fails for larger input value ?
- From: pereges
- Why this program fails for larger input value ?
- Prev by Date: Re: Integer to string conversion
- Next by Date: Re: Is cast operator unary or binary? How many operands?
- Previous by thread: Re: Why this program fails for larger input value ?
- Index(es):
Relevant Pages
|