【发布时间】:2024-06-15 22:15:01
【问题描述】:
我有一个课程TemperatureCalculator,它计算今天是哪一天,哪一天最热。它对向量进行操作。该向量由用户的输入填充。除了 klimaTag() 函数外,一切正常。
我知道为什么它不能按应有的方式工作,但我不知道如何在不使用 std::cout 而不是使用 return 语句的情况下解决它。
该函数应替换为字符串。在我的实现中,它为向量中不正确的每个数字给出“Sommertag”。
谁能告诉我怎么解决?
代码:
#include <iostream>
#include <vector>
class TemperatureCalculator {
private:
std::vector<float> temperatures;
public:
TemperatureCalculator(std::vector<float> temperatures) {
this->temperatures = temperatures;
}
std::string klimaTag() {
for (std::vector<float>::iterator i = temperatures.begin(); i != temperatures.end(); i++) {
if (*i >= 25 and *i < 30) {
return "Sommertag";
}
else if (*i >= 30 and *i < 35) {
return "Heißer Tag";
}
else if (*i >= 35) {
return "Wüstentag";
}
else {
return "Normaltag";
}
}
}
float maxNumber() {
float current_max = 0;
for (std::vector<float>::iterator i = temperatures.begin(); i != temperatures.end(); i++) {
if (*i > current_max) {
current_max = *i;
}
}
return current_max;
}
void get_user_input() {
int numberDays;
std::cout << "Wie viele Tage möchten Sie auswerten?" << std::endl;
std::cin >> numberDays;
float current_temp;
for (int i = 0; i < numberDays; i++) {
std::cout << "Hoechsttemp für Tag " << i + 1 << " eingeben: ";
std::cin >> current_temp;
temperatures.push_back(current_temp);
}
}
std::vector<float> get_temperature() {
return this->temperatures;
}
};
int main()
{
TemperatureCalculator t({});
t.get_user_input();
for (int i = 0; i < t.get_temperature().size(); i++) {
std::cout << "Tag " << i + 1 << " ist ein " << t.klimaTag() << std::endl;
}
std::cout << t.maxNumber();
}
【问题讨论】:
-
一个 return 打破了 for 循环。因此,您的 klimaTag 函数将循环遍历温度,但只返回一个与温度向量中的第一项对应的值。
-
你根本不需要
klimaTag中的循环,而是应该将i作为参数传递给它。 -
考虑一下:这些天你有一个循环。在里面你调用了一个方法,它本身在几天内循环。这真的是你想要的吗?
-
查看 this C++ reference 以及您的 C++ 编译器(例如 GCC ...)和调试器(例如 GDB)的文档...从现有 C++ 开源项目(例如 @ 987654324@, fish, RefPerSys, FLTK. 好好读一读C++ programming book
标签: c++ function class oop return-value