title: How Do I Fix This Loop? C ++
body: <blockquote>
    <p><strong>Possible Duplicate:</strong><br>
    <a href="https://stackoverflow.com/questions/12925276/c-loop-not-looping-appropriately">C++ Loop Not Looping Appropriately</a>  </p>
  </blockquote>
  
  
  
  <p>Warning..I am new to C++ programming...I have an array of 20 x 20 that outputs how hot a plate is. I need to reiterate through a loop until no cell in the array changes more than 0.1 degree(I refresh the values through every iteration. How would you monitor the largest change for any cell in an array in order to determine when to stop iterating? Right now I have tried, but the below doesn't output correctly.    </p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;string&gt;
  #include &lt;fstream&gt;
  #include &lt;iomanip&gt;
  
  using namespace std;
  
  
  const int array_size = 20; // set array size and neighbors to calculate rest of cells
  const int cell_neighbors = 4;
  
  void initialize(double hot_plate[][array_size]); //functions here
  bool writeFile(const double hot_plate[][array_size],
             const string file_name);
  
  double sum_cell(const double hot_plate[][array_size],
              const int cell_X, const int cell_Y);
  double value_cell(const double hot_plate[][array_size],
              const int cell_X, const int cell_Y);
  
  
  
  int main()
  {
  double hot_plate[array_size][array_size];//set variables
  
  initialize(hot_plate); //run function
  
  string file_name = "hot_plate.csv"; //file name for Excel
  
  //repeat until stable
  int repeat_until_stable = 1000;
  while ( repeat_until_stable &gt; 0)
  {
      for (int a = 1; a &lt; array_size - 1; a++)
      {
          for (int b = 1; b &lt; array_size - 1; b++)
              {
  
              {
                  hot_plate[a][b] = sum_cell(hot_plate, b, a);
              }
          }
      }
      repeat_until_stable--;
  }
  
  if (writeFile(hot_plate, file_name)) //check functionality of the program
  {
      cout &lt;&lt; "Excel File created\n";
  }
  else
  {
      cout &lt;&lt; "The Excel file did not write\n";
  }
  
  system("pause");
  
  return 0;
  }
  
  //function definition
  
  double sum_cell(const double hot_plate[][array_size],
              const int cell_X, const int cell_Y)
  {
  double cell_num = hot_plate[cell_X - 1][cell_Y]; // Top
  cell_num += hot_plate[cell_X][cell_Y - 1]; // Left
  cell_num += hot_plate[cell_X][cell_Y + 1]; // Right
  cell_num += hot_plate[cell_X + 1][cell_Y]; // Bottom
  
  cell_num /= cell_neighbors; // find average of the 4 values closest to cell
  
  return cell_num;
  }
  
  // setup the array so all values are defined
  void initialize(double hot_plate[][array_size])
  {
  for (int a = 0; a &lt; array_size; a++)
  {
      for (int b = 0; b &lt; array_size; b++)
      {
          if (a == 0 || a == array_size - 1)
          {
              if (b == 0 || b == array_size - 1)
              {
                  hot_plate[a][b] = 0.0;
              }
              else
              {
                  hot_plate[a][b] = 100.0;
              }
          }
          else
          {
              hot_plate[a][b] = 0.0;
          }
      }
  }
  }
  double value_cell(const double hot_plate[][array_size],
              const int cell_X, const int cell_Y)
  {
  double cell_value = hot_plate[cell_X][cell_Y]; // cell value
  
  return cell_value;
  }
  // Write the data to the Excel CSV file
  bool writeFile(const double hot_plate[][array_size],
             const string file_name)
  {
  // open the excel file
  ofstream fout(file_name);
  if (fout.fail())
    return false;
  
  for (int a = 0; a &lt; array_size; a++)
  {
     for (int b = 0; b &lt; array_size; b++)
     {
         fout &lt;&lt; hot_plate[a][b];
         if ( b &lt; array_size - 1)
         {
             fout &lt;&lt; ", ";
         }
         else if (a != array_size - 1)
         {
             fout &lt;&lt; endl;
         }
     }
  }
  
  // close the input stream from the file.
  fout.close();
  return true;
  }
  </code></pre>