int getNumAccidents(string );
void findLowest(double , double , double , double , double);
int main()
{
string regName;
double north = 0;
double south = 0;
double east = 0;
double west = 0;
double central = 0;
double lowest;
regName = "North";
north = getNumAccidents(regName);
regName = "South";
south = getNumAccidents(regName);
regName = "East";
east = getNumAccidents(regName);
regName = "West";
west = getNumAccidents(regName);
regName = "Central";
central = getNumAccidents(regName);
findLowest(north, south, east, west, central);
return 0;
}
getNumAccidents 函数允许用户输入每个地区报告的事故数量。
int getNumAccidents(string regionName)
{
double number;
cout << "\nEnter number of accidents for " << regionName << " area: " << endl;
cin >> number;
while (number <= -1)
{
cout << "\nEnter a positive number: " << endl;
cin >> number;
}
//cout << "Region: " << regionName << " Number: " << number << endl;
return number;
}
findLowest 函数确定哪个地区的事故数量最少以及该地区的名称。但如何让它显示事故次数最少的地区名称?
void findLowest(double n, double s, double e, double w, double c)
{
double lowest = n;
if (s < lowest)
{
lowest = s;
}
if (e < lowest)
{
lowest = e;
}
if (w < lowest)
{
lowest = w;
}
if (c < lowest)
{
lowest = c;
}
cout << "\nThe least number of accidents was " << lowest << "." << endl;
//cout << "The area was " << r << "." << endl;
}
最佳答案
声明一个字段为 double
的结构和 string
.
struct A
{
double count;
string region;
};
将每个区域名称及其对应的计数存储在其中。 findLowest
看起来像这样:
void findLowest(A n, A s, A e, A w, A c)
{
double low=n.count;
string reg=n.region;
if(s.count<low)
{
low=s.count;
reg=s.region;
}
if(e.count<low)
{
low=e.count;
reg=e.region;
}
if(w.count<low)
{
low=w.count;
reg=w.region;
}
if(c.count<low)
{
low=c.count;
reg=c.region;
}
cout << "\nThe least number of accidents was " << low << "." << endl;
cout << "The area was " << reg << "." << endl;
}
另一种方法是使用 C++ pair<string, double>
. pair
的内部实现又是一个 struct
.您可以使用 first
访问第一个元素第二个元素使用 second
.
pair< string, double > P;
P=make_pair("north", 12.12);
cout<<P.first<<" "<<P.second<<endl; //prints north 12.12..
另一种方法是使用 C++ STL set
.创建 set< pair <double, string > >
.为此,您无需明确找到最低值。 set
自动对插入其中的元素进行排序。示例代码如下所示:
set< double, string > St;
St.insert(make_pair(12.34, "north"));
St.insert(make_pair(34.56, "south"));
St.insert(make_pair(10.12, "east"));
cout<<St.begin()->second<<endl; //prints 'east'..
不知道大家是否熟悉set
或不。但是here是对它的引用。
关于c++ - 在下面的程序中,如何在 findLowest 函数中显示事故次数最少的地区的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17195770/