Programming Questions

  • Newest
  • Popular Tags
  • Ask Question
  • Arith Geo Infinite Loop in C
    I finished writing this program and it seems to get caught in an infinite loop or it says 'exited with non-zero status', but when I tested it on my machine it worked just fine. How might this machine be different, or is there a bug I missed? Here is my code:
    #include <stdio.h> 
    #include <stdlib.h>
    #define TRUE 1
    #define FALSE 0
    void ArithGeo(int arr[]) { 
      // code goes here  
      int length=0; //num of ints in array
      int diff,i,test,arth=TRUE,mult;
      while(arr[length]!= -1){
      //find diff between first two numbers
      diff = arr[1] - arr[0];
      //test the rest of the diffs in sequence
          test = arr[i+1] - arr[i];
          if(diff != test){
              arth = FALSE; //if the diff is not always the same then set false
      if(arth == TRUE){
      mult = arr[1]/arr[0]; //find first mult
      //test if same for rest
          test = arr[i+1]/arr[i];
          if(mult != test){ //if not the same then its neither type
      printf("Geometric"); //otherwise is 
    int main(void) { 
      // disable stdout buffering
      setvbuf(stdout, NULL, _IONBF, 0);
      // keep this function call here
      /* Note: In C you first have to initialize an array and set 
         it equal to the stdin to test your code with arrays. */
      int A[] = gets(stdin);
      return 0;
    kylecir posted this question on 4/12/17 | arith, geo, infinite, loop
  • +
  • 0
  • -
  • while(arr[length]!= -1){
    Im not sure this makes sense. Surely this would cause a memory error as youre eventually accessing memory thats not yours? Maybe your machine protects againts this and nicely gives you a -1 but maybe what they run it on doesnt. Theres probably a better solution to get the length
    Log in to write an answer.