自分で書いた以下のプログラムを提出したら、
・ファイルオープンのあとにファイルクローズがない
・51行目から65行目の並べ替えのルーチンで、比較対象にムダがある。
と先生から指摘をうけたのですが、どのように直したらいいのかわかりません。
申し訳ありませんが教えてもらえないでしょうか。
#include<iostream.h>
#include<iomanip.h>
#include<fstream.h>
const int days_Max = 31 ; //期間
struct TemperatureData {
int year ; //年
int month ; //月
int day ; //日
double high ; //最高気温
double low; //最低気温
} ;
main(){
cout << "入力した日にちの最高気温と最低気温を、最低気温が高い順に並び替えて表示する\n" << endl ;
TemperatureData tdate[days_Max] ; //構造体の変数宣言
int result ; //結果の構造体を指定する
//ファイルから入力するルーチン
ifstream fin; //ファイルストリーム
fin.open("temp.txt", ios::in);
//ファイルのオープンに失敗した場合、警告してプログラムを即、終了する
if (!fin){
cerr << "ファイルがオープンできません" << endl;
exit(1);
}
int days ; //考える期間
fin >> days ; //考える期間をファイルから読み込む
//日付、最高気温、最低気温をファイルから読み込む
for(int i = 0 ; i < days ; i++){
fin >> tdate[i].year ;
fin >> tdate[i].month ;
fin >> tdate[i].day ;
fin >> tdate[i].high ;
fin >> tdate[i].low ;
}
for(int i = 0 ; i < days-1 ; i++){
for(int t = 0 ; t < days-1 ; t++){
if(tdate[t].low < tdate[t+1].low){
TemperatureData swap = tdate[t] ;
tdate[t] = tdate[t+1] ;
tdate[t+1] = swap ;
}else if(tdate[t].low == tdate[t+1].low){
if(tdate[t].high < tdate[t+1].high){
TemperatureData temp = tdate[t] ;
tdate[t] = tdate[t+1] ;
tdate[t+1] = temp ;
}
}
}
}
cout << "\n最低気温が同じ場合、最高気温の高い順になっています\n" << endl ;
for(int j=0 ; j < days ; j++){
cout << tdate[j].year << "年 "
<< tdate[j].month << "月 "
<< tdate[j].day << "日 " << endl
<< "最高気温 " << tdate[j].high << "℃"
<< " 最低気温 " << tdate[j].low << "℃" << endl << endl ;
}
}