gpt4 book ai didi

c++ - 在下面的程序中,如何在 findLowest 函数中显示事故次数最少的地区的名称?

转载 作者:行者123 更新时间:2023-11-28 03:14:58 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com