//Matt Mauney //My solution to project 2 //output code for printing borrowed from prof. Shields #include #include #include #include using namespace std; int main(){ //temp variables for reading from file char observer = ' '; //who observed the feeding char food = ' '; //what was being eaten int size = 0; //size of food int counter = 0; //so we can tell where an error is,counts line# //streams for imput and output files ifstream inputfile; //this is the imput file stream ofstream outputfile; //this is the output file stream //the names of those files string inputfilename; //from user, name of imput file string outputfilename; //from user, name of output file //the variables below are tally variables int smallclams = 0; //number of small clams int mediumclams = 0; //number of medium clams int largeclams = 0; //number of large clams int smallurchins = 0; //number of small urchins int mediumurchins = 0; //number of medium urchins int largeurchins = 0; //number of large urchins int smallworms = 0; //number of small worms int mediumworms = 0; //number of medium worms int largeworms = 0; //number of medum worms int smallsnails = 0; //number of small snails int mediumsnails = 0; //number of medium snails int largesnails = 0; //number of large snails int smallabalones = 0; //number of small abalones int mediumabalones = 0; //number of medium abalones int largeabalones = 0; //number of large abalones int smallmussels = 0; //number of small mussels int mediummussels = 0; //number of medium mussels int largemussels = 0; //number of large mussels int smallunknowns = 0; //number of small unknowns int mediumunknowns = 0; //number of medium unknowns int largeunknowns = 0; //number of large unknowns /*****************************************************************************/ //copy output design directly from program description cout << "This program will process observation data files from" << endl; cout << "sea otter feeding observations at Elkhorn Slough." << endl << endl; cout << "Please enter the name of the file to use for input: "; getline(cin, inputfilename); //get imput file name from user cout << "Please enter the name of the file to use for output: "; getline(cin, outputfilename); //get output file name from user inputfile.open(inputfilename.c_str()); //open input file if(!inputfile) { cerr << "The imput file specified, " << inputfilename << ", could not be opened" << endl; exit(1); } outputfile.open(outputfilename.c_str()); //open or create output file if (!outputfile){ cerr << "The output file you specified, " << outputfilename << ", could not be opened." << endl; exit(1); } cout << endl; //I needed this for my output to be pretty while(inputfile >> observer >> food >> size) { //i like looping like this counter++; //increment our counter switch(food) { //switch for each possible food type case 'C': //first if a clam was eaten case 'c': switch(size) { //find size of clam, increment counter case 1: smallclams++; break; case 2: mediumclams++; break; case 3: largeclams++; break; default: cerr << "error in size on line: " << counter << endl; break; } break; //done if was a clam case 'U': //see if an urchin was eaten case 'u': switch(size) { //see what size urchin, raise counter case 1: smallurchins++; break; case 2: mediumurchins++; break; case 3: largeurchins++; break; default: cerr << "error in size on line: " << counter << endl; break; } break; //done if was an urchin case 'W': //see if a worm was eaten case 'w': switch(size) { //see how big the worm was, etc case 1: smallworms++; break; case 2: mediumworms++; break; case 3: largeworms++; break; default: cerr << "error in size on line: " << counter << endl; break; } break; case 'S': case 's': switch(size) { case 1: smallsnails++; break; case 2: mediumsnails++; break; case 3: largesnails++; break; default: cerr << "error in size on line: " << counter << endl; break; } break; case 'A': case 'a': switch(size) { case 1: smallabalones++; break; case 2: mediumabalones++; break; case 3: largeabalones++; break; default: cerr << "error in size on line: " << counter << endl; break; } break; case 'm': case 'M': switch(size) { case 1: smallmussels++; break; case 2: mediummussels++; break; case 3: largemussels++; break; default: cerr << "error in size on line: " << counter << endl; break; } break; case '?': switch(size) { case 1: smallunknowns++; break; case 2: mediumunknowns++; break; case 3: largeunknowns++; break; default: cerr << "error in size on line: " << counter << endl; break; } break; default: cerr << "error in item imput on line:" << counter << endl; }// }//now done looping inputfile.close(); //close imput file, done with it //output to screen first cout << endl << endl; cout << " " << setw(19) << "Small" << setw(10) << "Medium" << setw(10) << "Large" << endl; cout << setw(10) << "Clams" << setw(10) << smallclams << setw(10) << mediumclams << setw(10) << largeclams << endl; cout << setw(10) << "Urchins" << setw(10) << smallurchins << setw(10) << mediumurchins << setw(10) << largeurchins << endl; cout << setw(10) << "Worms" << setw(10) << smallworms << setw(10) << mediumworms << setw(10) << largeworms << endl; cout << setw(10) << "Snails" << setw(10) << smallsnails << setw(10) << mediumsnails << setw(10) << largesnails << endl; cout << setw(10) << "Abalones" << setw(10) << smallabalones << setw(10) << mediumabalones << setw(10) << largeabalones << endl; cout << setw(10) << "Mussels" << setw(10) << smallmussels << setw(10) << mediummussels << setw(10) << largemussels << endl; cout << setw(10) << "Unknown" << setw(10) << smallunknowns << setw(10) << mediumunknowns << setw(10) << largeunknowns << endl; //now print to output file outputfile << " " << setw(10) << "Small" << setw(10) << "Medium" << setw(10) << "Large" << endl; outputfile << setw(10) << "Clams" << setw(10) << smallclams << setw(10) << mediumclams << setw(10) << largeclams << endl; outputfile << setw(10) << "Urchins" << setw(10) << smallurchins << setw(10) << mediumurchins << setw(10) << largeurchins << endl; outputfile << setw(10) << "Worms" << setw(10) << smallworms << setw(10) << mediumworms << setw(10) << largeworms << endl; outputfile << setw(10) << "Snails" << setw(10) << smallsnails << setw(10) << mediumsnails << setw(10) << largesnails << endl; outputfile << setw(10) << "Abalones" << setw(10) << smallabalones << setw(10) << mediumabalones << setw(10) << largeabalones << endl; outputfile << setw(10) << "Mussels" << setw(10) << smallmussels << setw(10) << mediummussels << setw(10) << largemussels << endl; outputfile << setw(10) << "Unknown" << setw(10) << smallunknowns << setw(10) << mediumunknowns << setw(10) << largeunknowns << endl; outputfile.close(); return(0); }