이 프로그램이 올바른 형식으로 출력되도록하는 데 문제가 있습니다. setw 함수는 내가 원하는 것을하지 않는 것 같습니다. 또한, 평균, 최저 및 최고는 나에게 잘못된 대답을주고있다. 이 프로그램은 파일을 읽고 그 중 가장 높은 온도, 가장 낮은 온도 및 그 날의 모든 temps의 평균을 찾기 위해 처리합니다. 매일은 전날과 동일한 값을가집니다.제대로 출력되지 않음
누군가 내가 잘못하고있는 것을 지적 할 수 있습니까?
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <fstream>
#include <string>
double averageTemp(double total, int number);
double lowTemp(double valueLow);
double highTemp(double valueHigh);
double high = 0;
double low = 0;
int main()
{
std::string dummy = "";
int day, time = 0;
double input1[10][50], input5[10][50], input25[10][50];
/*
Keeps track of the data:
Dimension 1: stores the input for each time of the day.
*/
double m1[10][3], m5[10][3], m25[10][3];
/*
Process data:
Dimension 1:
Index 1: Keeps track of day
Dimension 2:
Index 1: Average temp
Index 2: Low temp
Index 3: High temp
*/
std::ifstream datain;
std::ofstream dataout;
datain.open("curiosity234X.dat");
dataout.open("output.dat");
for (unsigned int i = 0; i < 4; i++)
{
getline(datain, dummy);
}
int dayCount = 0, loopDay;
while (datain >> day >> dummy >> dummy >> input1[day][time]
>> input5[day][time] >> input25[day][time])
{
while (dayCount == 0)
{
loopDay = day - 1;
dayCount++;
}
m1[day][0] = averageTemp(input1[day][time], time);
m1[day][1] = lowTemp(input1[day][time]);
m1[day][2] = highTemp(input1[day][time]);
m5[day][0] = averageTemp(input5[day][time], time);
m5[day][1] = lowTemp(input5[day][time]);
m5[day][2] = highTemp(input5[day][time]);
m25[day][0] = averageTemp(input25[day][time], time);
m25[day][1] = lowTemp(input25[day][time]);
m25[day][2] = highTemp(input25[day][time]);
time++;
}
dataout << std::setw(5) << std::fixed;
dataout << "Average" << "Low" << "High" << std::endl
<< "Temp" << "Temp" << "Temp" <<std::endl
<< "1 meter" << ".5 meters" << ".25 meters" << std::endl;
std::cout << std::setw(5) << std::fixed;
std::cout << "Average" << "Low" << "High" << std::endl
<< "Temp" << "Temp" << "Temp" <<std::endl
<< "1 meter" << ".5 meters" << ".25 meters" << std::endl;
for (unsigned int i = loopDay; i < day; i++)
{
dataout << std::fixed << std::setprecision(1) << std::setw(5);
dataout
<< m1[day][0] << m1[day][1] << m1[day][2]
<< m5[day][0] << m5[day][1] << m5[day][2]
<< m25[day][0] << m25[day][1] << m25[day][2]
<< std::endl;
std::cout << std::fixed << std::setprecision(1) << std::setw(5);
std::cout
<< m1[day][0] << m1[day][1] << m1[day][2]
<< m5[day][0] << m5[day][1] << m5[day][2]
<< m25[day][0] << m25[day][1] << m25[day][2]
<< std::endl;
}
std::cout << std::endl << std::endl << std::endl
<< "The output.dat file has been written and transmitted."
<< std::endl;
_getch();
return 0;
}
double lowTemp(double valueLow)
{
if (valueLow < low)
{
::low = valueLow;
return valueLow;
} else
{
return low;
}
}
double highTemp(double valueHigh)
{
if (valueHigh > high)
{
::high = valueHigh;
return valueHigh;
} else
{
return high;
}
}
double averageTemp(double total, int number)
{
double average = total/double(number);
return average;
}
"부적절한 출력"에 대해 자세히 설명해 주시겠습니까? 어떤 결과를 기대하고 있으며 무엇을 얻고 있습니까? – PakkuDon
@PakkuDon : 파일을 읽고 매일 파일의 최고 온도, 최저 온도 및 모든 temps 평균을 찾습니다. – Brandon
많은 코드를 한 번에 작성할 수는 없으며 제대로 작동 할 것입니다. 작고 간단한 것으로 시작하고, 테스트하고, 완벽하게 작동 시키며, 작은 기능을 추가하고, 테스트하고, 원하는 모든 작업을 수행 할 때까지 반복하십시오. – Beta