65,211
社区成员
发帖
与我相关
我的任务
分享
#pragma warning(disable: 4786)
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <vector>
#include <map>
#include <sstream>
using namespace std;
vector<string> MountOn;
vector<string> StateOn;
vector< vector<int> > NumOn;
vector<double> AverageOn;
void InitOperate(fstream &);
void Query();
void Fav();
void List();
void Rate();
void Ave();
int main()
{
fstream fin("txt.file", ios::in);
InitOperate(fin);
cout << "make your select(1-5): ";
int n;
cin >> n;
switch(n)
{
case 1: Query(); break;
case 2: Fav(); break;
case 3: List(); break;
case 4: Rate(); break;
case 5: Ave(); break;
default:
return -1;
}
return 0;
}
void InitOperate(fstream &fin)
{
string str;
string Mount;
string State;
string NumBuf;
vector<int> Num;
string::size_type pos;
char Line[256] = {0};
double sum;
while(fin.getline(Line, 256))
{
Mount.erase(Mount.begin(), Mount.end());
State.erase(State.begin(), State.end());
NumBuf.erase(NumBuf.begin(), NumBuf.end());
Num.erase(Num.begin(), Num.end());
str = Line;
for(pos = 0; str[pos] != '$'; pos++)
Mount += str[pos];
pos++;
for(; str[pos] != '$'; pos++)
State += str[pos];
pos++;
for(; pos != str.size(); pos++)
NumBuf += str[pos];
stringstream ss(NumBuf);
int i;
for(i = 0; i < 13; i++)
{
int temp;
ss >> temp;
Num.push_back(temp);
}
sum = 0;
for(vector<int>::size_type j = 1; j < 13; j++)
sum += Num[j];
sum /= 12.0;
AverageOn.push_back(sum);
MountOn.push_back(Mount);
StateOn.push_back(State);
NumOn.push_back(Num);
}
fin.close();
}
void Query()
{
double sum = 0;
vector<string>::size_type i;
for(i = 0; i < MountOn.size(); i++)
{
cout << MountOn[i] << "\t\t" << StateOn[i] << "\t\t" << NumOn[i][0] << '\t';
cout << setiosflags(ios::fixed) << setprecision(2) << AverageOn[i] << endl;
}
}
void Fav()
{
cout << "which State do you like to know? " << endl;
string state;
cin >> state;
vector< vector<int> > MaxNMin;
map<int, string> MountInfo;
for(vector<string>::size_type pos = 0; pos != StateOn.size(); pos++)
{
if(StateOn[pos] == state)
{
MountInfo.insert(pair<int, string>(NumOn[pos][0], MountOn[pos]));
MaxNMin.push_back(NumOn[pos]);
}
}
map<int, string>::reverse_iterator it = MountInfo.rbegin();
cout << "The highest peak in " << state << " is " << it->second << " with an elevation of " << it->first << "." << endl;
int Max = 0, Min = MaxNMin[0][0];
vector<int>::size_type size = 0;
double sum = 0;
for(vector< vector<int> >::size_type i = 0; i != MaxNMin.size(); i++)
{
size += MaxNMin[i].size();
for(vector<int>::size_type j = 1; j != MaxNMin[i].size(); j++)
{
if(MaxNMin[i][j] > Max)
Max = MaxNMin[i][j];
if(MaxNMin[i][j] < Min)
Min = MaxNMin[i][j];
sum += MaxNMin[i][j];
}
}
cout << "The highest rating is " << Max << ", the lowest rating is " << Min << ", and the average rating is " << sum / size << endl;
}
void List()
{
double col = 0;
cout << "Climber Average Rating " << endl;
for(vector<int>::size_type j = 1; j != NumOn[0].size(); j++)
{
col = 0;
for(vector< vector<int> >::size_type i = 0; i != NumOn.size(); i++)
col += NumOn[i][j];
col /= NumOn.size();
cout << j << "\t\t" << col << endl;
}
}
void Rate()
{
}
void Ave()
{
double sum = 0;
vector<int>::size_type size = 0;
for(vector< vector<int> >::size_type i = 0; i != NumOn.size(); i++)
{
for(vector<int>::size_type j = 1; j != NumOn[i].size(); j++)
{
size++;
sum += NumOn[i][j];
}
}
cout << "the average is: " << sum / size << endl;
}
#pragma warning(disable: 4786)
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <vector>
#include <map>
#include <sstream>
using namespace std;
vector<string> MountOn;
vector<string> StateOn;
vector< vector<int> > NumOn;
vector<double> AverageOn;
void InitOperate(fstream &);
void Query();
void Fav();
void List();
void Rate();
void Ave();
int main()
{
fstream fin("txt.file", ios::in);
InitOperate(fin);
cout << "make your select(1-5): ";
int n;
cin >> n;
switch(n)
{
case 1: Query(); break;
case 2: Fav(); break;
case 3: List(); break;
case 4: Rate(); break;
case 5: Ave(); break;
default:
return -1;
}
return 0;
}
void InitOperate(fstream &fin)
{
string str;
string Mount;
string State;
string NumBuf;
vector<int> Num;
string::size_type pos;
char Line[256] = {0};
double sum;
while(fin.getline(Line, 256))
{
Mount.erase(Mount.begin(), Mount.end());
State.erase(State.begin(), State.end());
NumBuf.erase(NumBuf.begin(), NumBuf.end());
Num.erase(Num.begin(), Num.end());
str = Line;
for(pos = 0; str[pos] != '$'; pos++)
Mount += str[pos];
pos++;
for(; str[pos] != '$'; pos++)
State += str[pos];
pos++;
for(; pos != str.size(); pos++)
NumBuf += str[pos];
stringstream ss(NumBuf);
int i;
for(i = 0; i < 13; i++)
{
int temp;
ss >> temp;
Num.push_back(temp);
}
sum = 0;
for(vector<int>::size_type j = 1; j < 13; j++)
sum += Num[j];
sum /= 12.0;
AverageOn.push_back(sum);
MountOn.push_back(Mount);
StateOn.push_back(State);
NumOn.push_back(Num);
}
fin.close();
}
void Query()
{
double sum = 0;
vector<string>::size_type i;
for(i = 0; i < MountOn.size(); i++)
{
cout << MountOn[i] << "\t\t" << StateOn[i] << "\t\t" << NumOn[i][0] << '\t';
cout << setiosflags(ios::fixed) << setprecision(2) << AverageOn[i] << endl;
}
}
void Fav()
{
cout << "which State do you like to know? " << endl;
string state;
cin >> state;
vector< vector<int> > MaxNMin;
map<int, string> MountInfo;
for(vector<string>::size_type pos = 0; pos != StateOn.size(); pos++)
{
if(StateOn[pos] == state)
{
MountInfo.insert(pair<int, string>(NumOn[pos][0], MountOn[pos]));
MaxNMin.push_back(NumOn[pos]);
}
}
map<int, string>::reverse_iterator it = MountInfo.rbegin();
cout << "The highest peak in " << state << " is " << it->second << "with an elevation of " << it->first << "." << endl;
int Max = 0, Min = MaxNMin[0][0];
vector<int>::size_type size = 0;
double sum = 0;
for(vector< vector<int> >::size_type i = 0; i != MaxNMin.size(); i++)
{
size += MaxNMin[i].size();
for(vector<int>::size_type j = 1; j != MaxNMin[i].size(); j++)
{
if(MaxNMin[i][j] > Max)
Max = MaxNMin[i][j];
if(MaxNMin[i][j] < Min)
Min = MaxNMin[i][j];
sum += MaxNMin[i][j];
}
}
cout << "The highest rating is " << Max << ", the lowest rating is " << Min << ", and the average rating is " << sum / size << endl;
}
void List()
{
}
void Rate()
{
}
void Ave()
{
}