#include <iostream>
#include <iomanip>
#include <math.h>
#include <string>
#include <fstream>

using namespace std;

const int SIZE = 10;

// note that arrays always act like the reference (&) we saw last week
void newandimproved(int in[SIZE][SIZE],int out[SIZE][SIZE]) {
for(int row = 0; row < SIZE; row++) {
for(int col = 1; col < SIZE-1; col++) {
// the following only works if col is in the range 1 through SIZE-2.
// Note the loop is changed to do this.
out[row][col] = int(((in[row][col+1])*321)%(in[row][col-1]+7));
}
}
// What about the first and last columns? Lets fill those too.
for (int row = 0; row < SIZE; row++) {
out[row] = 1;
out[row][SIZE-1] = in[row];
}

}
int main()
{
int land[SIZE][SIZE]; // The array that holds elevations for your landscape.
int newland[SIZE][SIZE];

// First set up the landscape as a smooth hill
for(int rows = 0; rows < SIZE; rows++) {
for(int cols = 0; cols < SIZE; cols++) {
land[rows][cols] = cols;
}
}

// Put in a few bumps
land = 2*land;
land = 10;

// Now print it out
cout << "Here is land:" << endl;
for(int row = 0; row < SIZE; row++) {
for(int col = 0; col < SIZE; col++) {
cout << land[row][col]<<",";
}
cout <<endl;
}

//use new and improved
newandimproved(land,newland);
cout << endl << "And here is newland:" << endl;
for(int row = 0; row < SIZE; row++) {
for(int col = 0; col < SIZE; col++) {
cout << newland[row][col]<<",";
}
cout <<endl;
}

// Now write it to a file
cout << "Where would you like to write the file?"<<endl;
string filelocation;
getline(cin,filelocation); // Important to use getline here, there may be blanks in the file name
// Also remove "s, windows adds them in some cases
if (filelocation.substr(0,1) == "\"") {
filelocation = filelocation.substr(1,filelocation.length()-2);
}

cout << "FYI, writing to " << filelocation << endl;
ofstream myfile (filelocation); // Open the file at the location the user asks for
if (myfile.is_open()) // If it worked write out the values
{
for(int row = 0; row < SIZE; row++) {
for(int col = 0; col < SIZE; col++) {
myfile << newland[row][col]<<","; // This is just like cout, except it writes to the file
}
myfile <<endl;
}

myfile.close();
}
else {
// If the file open didnt work, print out an error
cout << "Unable to open file";
}
system("pause");
} 