Could somebody help me find the cause of a Segmentation Fault error in my program?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • jcancino
    New Member
    • Apr 2010
    • 1

    #1

    Could somebody help me find the cause of a Segmentation Fault error in my program?

    The program compiles and works all the way until the multiplecheck function, any help would be great. The program is not finished yet and I am new to C programming so I know the program may not be the most efficient.
    Code:
    #include<stdio.h>
    #include<math.h>
    #define ARRAYSIZE 30
    
    int getData(int[]);
    void printData(int[],int);
    int multipleCheck(int[],int);
    int multipleCount(int[],int,int,int);
    
    int main()
    {
      int data[ARRAYSIZE];
      int num_data;
      int multi_ct;
    
      num_data = getData(data);
      printData(data, num_data);
      multi_ct = multipleCheck(data,num_data);
      return(0);
    }
    
    int getData(int array[])
    {
      int lcv; //local counting variable
      int ct; //the number of times that the user enters a number
    
      lcv = 0;
      ct = 1;
      while (lcv < ARRAYSIZE)
      {
        printf("Enter the data #%d or -1: ", lcv + 1);
        scanf("%d", &array[lcv]);
        ct++;
        if (array[lcv] < 0)
        {
          array[lcv] = 0;
          lcv = 49;
          ct--;
        }
        lcv++;
      }
      printf("\n");
      return(ct);
    }
    
    
    void printData(int array[],int num_d)
    {
      int lcv;
    
      printf("Data entered: ");
      for (lcv = 0; lcv < (num_d - 1); lcv++)
      {
       printf("%d ", array[lcv]);
    
      }
      printf("\n");
    }
    
    
    int multipleCheck(int array[], int num_d)
    {
      int lcv;
      int lcv2;
      int ct;
      int ctmax;
      int hold;
    
      ctmax = 0;
    
      for (lcv = 0; lcv < (num_d - 2); lcv++)
      {
        for (lcv2 = lcv + 1; lcv2 < (num_d - 1); lcv2++)
        {
          hold = array[lcv] * array[lcv2];
          ct = multipleCount(array,lcv,hold,num_d);
          if (ct > ctmax)
          {
            ctmax = ct;
          }
        }
      }
      printf("\n%d\n", ctmax);
      return (ctmax);
    }
    
    
    int multipleCount(int array[], int start, int num_p,int num_d)
    {
      int lcv;
      int lcv2;
      int ct;
    
      ct = -1;
    
      for (lcv = 0; lcv <= (num_d - 1); lcv++)
      {
        for (lcv2 = lcv + 1; lcv <= num_d; lcv2++)
        {
          if ((array[lcv] * array [lcv2]) == num_p)
          {
            ct++;
          }
        }
      }
      return(ct);
    }
  • newb16
    Contributor
    • Jul 2008
    • 687

    #2
    line 98: condition for loop is wrong: for (lcv2 = lcv + 1; lcv <= num_d; lcv2++)

    Comment

    Working...