C++] My code requires that I show both: Highest temperature recorded in the mont
ID: 3853302 • Letter: C
Question
C++] My code requires that I show both:Highest temperature recorded in the month of (Month goes here)
Lowest temperature recorded in the month of (Month goes here)
can anyone edit my code, and add this piece of code so that the months show as well???? Also, why can't my code read the outputfile with decimal answers???
#include<iostream> #include<fstream> #include<string> #include<iomanip> #include <cstdlib> const int rows = 12; //to make the rows constant const int columns = 2; //to make the columns constant using namespace std; void getData (int listTemp[rows][columns], ifstream& infile); //reads and stores data into the two dimensional array void averageHigh ( int listTemp[rows][columns]); //calculates and returns the average high temperature for the year void averageLow (int listTemp[rows][columns]); //calculates and returns the average low temperature for the year void indexHighTemp (int listTemp[rows][columns], ofstream& outfile);//returns the index of the highest high temperature in the array void indexLowTemp (int listTemp[columns][columns], ofstream& outfile); //returns the index of the lowest low temperature in the array ifstream infile; ofstream outfile; int main() { int listTemp[rows][columns]; //2-D array string inputFileName; string outputFileName; cout<<"Enter input file name with full path " "or file must be in current workspace folder to avoid inputting the full path: "; getline(cin, inputFileName); infile.open(inputFileName.c_str()); //open infile if(!infile) // checking whether the input file exist or not { cout<<"Error! input file not found."; return -1; } cout<<"Enter output file name: "; getline(cin, outputFileName); outfile.open(outputFileName.c_str()); //set showpoint so result will be able to show decimal points outfile<<setprecision(2); //calls functions getData(listTemp, infile); averageHigh(listTemp); averageLow(listTemp); indexHighTemp(listTemp, outfile); indexLowTemp(listTemp, outfile); infile.close(); outfile.close(); return 0; } void getData(int listTemp[rows][columns], ifstream& infile) { int x; int y; for (x=0; x < rows ; x++) { for( y=0; y < columns; y++) //gathers 2-D array data. { infile >> listTemp[x][y]>>ws; } } } void averageHigh ( int listTemp[rows][columns]) { int x=1; double sum = 0.0; double avg; //average of the highs for (x=0; x < rows; x++) //calculates average high temp { sum = listTemp[x][0] + sum; } avg = sum/x; outfile << "Average high for the year: " << avg << endl; //outputs data to Data1_Output.txt } void averageLow ( int listTemp[rows][columns]) { double sum = 0.0; double avg; //average of the lows for (int x=0; x < rows; x++) //calculates average low temp { sum = listTemp [x][1] + sum; } avg = sum/12.0; outfile << "Average low for the year: " << avg << endl; //outputs data to Data1_Output.txt } void indexHighTemp ( int listTemp[rows][columns], ofstream& outfile) //find highest in the high column { int highestIndex = 0; for(int x = 0; x < rows; x++) //calculates highest in the high column { if(listTemp[0][x] > highestIndex) highestIndex = listTemp[0][x]; } outfile << "The index high temperature is " << highestIndex << endl; //outputs data to Data1_Output.txt } void indexLowTemp ( int listTemp[rows][columns], ofstream& outfile) //find the lowest in the low column { int lowestIndex = 0; for(int x = 0; x < rows; x++) //calculates lowest in the low column { if(lowestIndex > listTemp[0][x]) lowestIndex = listTemp[0][x]; } outfile << "The index low temperature is " << lowestIndex << endl; //outputs data to Data1_Output.txt } C++] My code requires that I show both:
Highest temperature recorded in the month of (Month goes here)
Lowest temperature recorded in the month of (Month goes here)
can anyone edit my code, and add this piece of code so that the months show as well???? Also, why can't my code read the outputfile with decimal answers???
#include<iostream> #include<fstream> #include<string> #include<iomanip> #include <cstdlib> const int rows = 12; //to make the rows constant const int columns = 2; //to make the columns constant using namespace std; void getData (int listTemp[rows][columns], ifstream& infile); //reads and stores data into the two dimensional array void averageHigh ( int listTemp[rows][columns]); //calculates and returns the average high temperature for the year void averageLow (int listTemp[rows][columns]); //calculates and returns the average low temperature for the year void indexHighTemp (int listTemp[rows][columns], ofstream& outfile);//returns the index of the highest high temperature in the array void indexLowTemp (int listTemp[columns][columns], ofstream& outfile); //returns the index of the lowest low temperature in the array ifstream infile; ofstream outfile; int main() { int listTemp[rows][columns]; //2-D array string inputFileName; string outputFileName; cout<<"Enter input file name with full path " "or file must be in current workspace folder to avoid inputting the full path: "; getline(cin, inputFileName); infile.open(inputFileName.c_str()); //open infile if(!infile) // checking whether the input file exist or not { cout<<"Error! input file not found."; return -1; } cout<<"Enter output file name: "; getline(cin, outputFileName); outfile.open(outputFileName.c_str()); //set showpoint so result will be able to show decimal points outfile<<setprecision(2); //calls functions getData(listTemp, infile); averageHigh(listTemp); averageLow(listTemp); indexHighTemp(listTemp, outfile); indexLowTemp(listTemp, outfile); infile.close(); outfile.close(); return 0; } void getData(int listTemp[rows][columns], ifstream& infile) { int x; int y; for (x=0; x < rows ; x++) { for( y=0; y < columns; y++) //gathers 2-D array data. { infile >> listTemp[x][y]>>ws; } } } void averageHigh ( int listTemp[rows][columns]) { int x=1; double sum = 0.0; double avg; //average of the highs for (x=0; x < rows; x++) //calculates average high temp { sum = listTemp[x][0] + sum; } avg = sum/x; outfile << "Average high for the year: " << avg << endl; //outputs data to Data1_Output.txt } void averageLow ( int listTemp[rows][columns]) { double sum = 0.0; double avg; //average of the lows for (int x=0; x < rows; x++) //calculates average low temp { sum = listTemp [x][1] + sum; } avg = sum/12.0; outfile << "Average low for the year: " << avg << endl; //outputs data to Data1_Output.txt } void indexHighTemp ( int listTemp[rows][columns], ofstream& outfile) //find highest in the high column { int highestIndex = 0; for(int x = 0; x < rows; x++) //calculates highest in the high column { if(listTemp[0][x] > highestIndex) highestIndex = listTemp[0][x]; } outfile << "The index high temperature is " << highestIndex << endl; //outputs data to Data1_Output.txt } void indexLowTemp ( int listTemp[rows][columns], ofstream& outfile) //find the lowest in the low column { int lowestIndex = 0; for(int x = 0; x < rows; x++) //calculates lowest in the low column { if(lowestIndex > listTemp[0][x]) lowestIndex = listTemp[0][x]; } outfile << "The index low temperature is " << lowestIndex << endl; //outputs data to Data1_Output.txt } Sample output Jimis-MacBook-Pro: Asst08 VaskoDaGa er cat input . dat 74 49 82 46 87 60 91 62 99 68 115 94 115 97 111 85 104 81 93 71 83 55 70 47 Jimis-MacBook-Pro: Asst08 VaskoDaGaner g++ asst08. cpp Jimis-MacBook-Pro:Asst08 VaskoDaGamer$./a.out Enter input filename: input dat Enter output Book-Pro:Asst08 VaskoDaGame utput The average of all high temperatures: 93.67 degrees The average of all low temperatures: 67.92 degrees Highest tenperature recorded in the month of June Lowest temperature recorded in the month of February
Explanation / Answer
#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include <cmath>
using namespace std;
struct StudentData
{
int studentID;
string first_name;
string last_name;
int exam1;
int exam2;
int exam3;
int total;
char ch;
};
const int SIZE = 9;
const int INFO = 4;
void openInputFile(ifstream &, string);
void getTotal(StudentData[]);
void getGrade(StudentData[]);
void calcLowest(StudentData[], int &, int &, int &, int &, int[]);
void calcHighest(StudentData[], int &, int &, int &, int &, int[]);
void getAverage(StudentData[], int, double &, double &, double &, double &, double[]);
void getStd(StudentData[], double &, double &, double &, double &, double &, double &, double &, double &, double[]);
void print(StudentData[], int[], int[], double[], double[]);
void sort(StudentData[]);
int main()
{
StudentData arr[SIZE];
int lowest1, lowest2, lowest3, lowest4;
int highest1, highest2, highest3, highest4;
double average1 = 0, average2 = 0, average3 = 0, average4 = 0;
double std1 = 0, std2 = 0, std3 = 0, std4 = 0
int lowest[INFO] = {};
int highest[INFO] = {};
double average[INFO] = {};
double standardDeviation[INFO] = {};
ifstream inFile;
string inFileName = "C:\Users\Lisa\Desktop\scores.txt";
openInputFile(inFile, inFileName);
for(int count = 0; count < SIZE; count++)
{
inFile >> arr[count].studentID >> arr[count].first_name >> arr[count].last_name >> arr[count].exam1 >> arr[count].exam2 >> arr[count].exam3;
}
inFile.close();
getTotal(arr);
getGrade(arr);
calcLowest(arr, lowest1, lowest2, lowest3, lowest4, lowest);
calcHighest(arr, highest1, highest2, highest3, highest4, highest);
getAverage(arr, SIZE, average1, average2, average3, average4, average);
getStd(arr, std1, std2, std3, std4, average1, average2, average3, average4, standardDeviation);
cout << " ";
print(arr, lowest, highest, average, standardDeviation);
cout << " ";
sort(arr);
print(arr, lowest, highest, average, standardDeviation);
system("PAUSE");
return 0;
}
void openInputFile(ifstream &inFile, string inFileName)
{
inFile.open(inFileName);
if (!inFile)
{
cout << "Error to open file." << endl;
cout << endl;
return;
}
}
*/
void getTotal(StudentData arr[])
{
for(int i = 0; i < SIZE; i++)
{
arr[i].total = arr[i].exam1 + arr[i].exam2 + arr[i].exam3;
}
}
void getGrade(StudentData arr[])
{
for(int i = 0; i < SIZE; i++)
{
if(arr[i].total >= 270)
arr[i].ch = 'A';
else if(arr[i].total >= 240)
arr[i].ch = 'B';
else if(arr[i].total >= 210)
arr[i].ch = 'C';
else if(arr[i].total >= 180)
arr[i].ch = 'D';
else
arr[i].ch = 'F';
}
}
void calcLowest(StudentData arr[], int &lowest1, int &lowest2, int &lowest3, int &lowest4, int lowest[])
{
int smallest = 0;
lowest1 = arr[0].exam1;
lowest2 = arr[0].exam2;
lowest3 = arr[0].exam3;
lowest4 = arr[0].total;
for (int i = 0; i < SIZE; i++)
{
if (lowest1 > arr[i].exam1)
{
lowest1 = arr[i].exam1;
smallest = i;
}
if (lowest2 > arr[i].exam2)
{
lowest2 = arr[i].exam2;
smallest = i;
}
if (lowest3 > arr[i].exam3)
{
lowest3 = arr[i].exam3;
smallest = i;
}
if (lowest4 > arr[i].total)
{
lowest4 = arr[i].total;
smallest = i;
}
}
for(int index = 0; index < INFO; index++)
{
if(index == 0)
lowest[0] = lowest1;
else if(index == 1)
lowest[1] = lowest2;
else if(index == 2)
lowest[2] = lowest3;
else if(index == 3)
lowest[3] = lowest4;
else
cout << "Fail!" << endl;
}
}
void calcHighest(StudentData arr[], int &highest1, int &highest2, int &highest3, int &highest4, int highest[])
{
int biggest = 0;
highest1 = arr[0].exam1;
highest2 = arr[0].exam2;
highest3 = arr[0].exam3;
highest4 = arr[0].total;
for (int i = 0; i < SIZE; i++)
{
if (highest1 < arr[i].exam1)
{
highest1 = arr[i].exam1;
biggest = i;
}
if (highest2 < arr[i].exam2)
{
highest2 = arr[i].exam2;
biggest = i;
}
if (highest3 < arr[i].exam3)
{
highest3 = arr[i].exam3;
biggest = i;
}
if (highest4 < arr[i].total)
{
highest4 = arr[i].total;
biggest = i;
}
}
for(int index = 0; index < INFO; index++)
{
if(index == 0)
highest[0] = highest1;
else if(index == 1)
highest[1] = highest2;
else if(index == 2)
highest[2] = highest3;
else if(index == 3)
highest[3] = highest4;
else
cout << "Fail!" << endl;
}
}
/**
* Pre-condition:
* Post-condition:
*/
void getAverage(StudentData arr[], int size, double &average1, double &average2, double &average3, double &average4, double average[])
{
int sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0;
for(int i = 0; i < SIZE; i++)
{
sum1 += arr[i].exam1;
sum2 += arr[i].exam2;
sum3 += arr[i].exam3;
sum4 += arr[i].total;
}
average1 += static_cast<double>(sum1)/size;
average2 += static_cast<double>(sum2)/size;
average3 += static_cast<double>(sum3)/size;
average4 += static_cast<double>(sum4)/size;
// Loop average values into an array of size 4
for(int index = 0; index < INFO; index++)
{
if(index == 0)
average[0] = average1;
else if(index == 1)
average[1] = average2;
else if(index == 2)
average[2] = average3;
else if(index == 3)
average[3] = average4;
else
cout << "Fail!" << endl;
}
}
void getStd(StudentData arr[], double &std1, double &std2, double &std3, double &std4, double &average1, double &average2, double &average3, double &average4, double standardDeviation[])
{
double deviationSum1 = 0, deviationSum2 = 0, deviationSum3 = 0, deviationSum4 = 0;
for(int i = 0; i < SIZE; i++)
{
deviationSum1 += pow((arr[i].exam1 - average1), 2);
deviationSum2 += pow((arr[i].exam2 - average2), 2);
deviationSum3 += pow((arr[i].exam3 - average3), 2);
deviationSum4 += pow((arr[i].total - average4), 2);
}
std1 = sqrt(deviationSum1 / ((SIZE) - 1));
std2 = sqrt(deviationSum2 / ((SIZE) - 1));
std3 = sqrt(deviationSum3 / ((SIZE) - 1));
std4 = sqrt(deviationSum4 / ((SIZE) - 1));
for(int index = 0; index < INFO; index++)
{
if(index == 0)
standardDeviation[0] = std1;
else if(index == 1)
standardDeviation[1] = std2;
else if(index == 2)
standardDeviation[2] = std3;
else if(index == 3)
standardDeviation[3] = std4;
else
cout << "Fail!" << endl;
}
}
cout << " ";
}
void sort(StudentData arr[])
{
StudentData temp;
for (int i = 0; i < (SIZE - 1); i++)
{
for (int j = i + 1; j < SIZE; j++)
{
if (arr[i].last_name > arr[j].last_name)
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.