Optional Challenge with PGM files and arrays Complete this p
     Optional Challenge: with PGM files and arrays Complete this program by adding three functions and their prototypes. This program should read a PGM from a file, save it to a new file, and print the image header and pixel values to the console. You\'ll need one function to open a PGM file, a second one to save the PGM file already read into new PGM file, and the third one to display the array to the console. (If the image is large, printing all the pixels may get rather awkward. If the image is large (say, more than 200 pixels total), you can prompt the user for a starting row and column and a number of rows and columns to print, then just display a selected portion of the array. This is optional, but you\'ll find this helpful when we get to the projects, so is worth the effort to do it now.) Hints: The readPGM function should take as an input parameter the input file name. Question: what are its outputs? How will you get that information back to the calling code? The savePGM and printPGM functions should receive all the information needed (type (P2), # of cols, etc., as well as the pixel array. Since they will not modify the array, how should you pass the array in? How should you pass in the other parameters? Name your program PGM input output.cpp Note: If you are using a version of VS earlier than 2013, you will probably need to add the following line to your code: #pragma comment(linker, STACK 16777218) Why? This increases the stack size to 16 MB. Default stack size in earlier versions of VS was only 1 MB, and the 512x512 int array uses 1 MB. BTW, dynamic memory allocation and pointers is the right way to do this, but we\'re not there yet.  
  
  Solution
This method become every so often known as linkage editing and the output known as a load module.
A compiler works with what are occasionally known as 3GL and better-stage languages. An assembler works on packages written the use of a processor\'s assembler language.

