comp.lang.c
[Top] [All Lists]

Why this program fails for larger input value ?

Subject: Why this program fails for larger input value ?
From: pereges
Date: Tue, 29 Apr 2008 12:14:44 -0700 PDT
Newsgroups: comp.lang.c

#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[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

<Prev in Thread] Current Thread [Next in Thread>
Privacy Policy