【问题标题】:Function assigning variables to array将变量分配给数组的函数
【发布时间】:2026-01-09 03:45:01
【问题描述】:

我正在为学校做编程作业, (只需要我原始代码的一部分的帮助,而不是作业求解器,谢谢。) 而我的函数 findHighest() 无法正常工作。我相信它只有零,而不是存储传递给它的双精度值的数组。 我需要帮助来解决这个问题。 谢谢

int main()
{
double nEast = 0, sEast = 0, nWest = 0, sWest = 0;

cout << "\n\n\t\tQuarterly Sales Report by region\n";

cout << "\n\nNorth East region:\n" ;
nEast = getSales(nEast);
cout << "\n\nSouth East region:\n";
sEast = getSales(sEast);
cout << "\n\nNorth West region:\n";
nWest = getSales(nWest);
cout << "\n\nSouth West region:\n";
sWest = getSales(sWest);

findHighest(nEast, sEast, nWest, sWest);

return 0;
}




void findHighest (double nEast, double sEast, double nWest, double sWest)
{
double regions[4] = {nEast, sEast, nWest, sWest};
double temp = 0;


for(int i = 0; i <= 3;)
{
    if(regions[i] >= temp)
    {
        temp = regions[i];
        cout << temp;
        i++;
    }
}
cout << "The biggest number is: " << temp << endl;
}

【问题讨论】:

  • 你为什么要在一个奇怪的地方增加你的i
  • 您是否在调用findHighest 之前验证了变量已设置为您期望的值?
  • @Isaiah:如果i 不递增,则循环不会终止。
  • 如果区域尚未按升序排序,则您的 i 循环是无限的
  • @Isaiah:在所有类 C 语言中,for 循环不会自动增加计数器。事实上,for 没有添加 while 循环无法做到的功能。

标签: c++ arrays function


【解决方案1】:

试试下面的

#include <algorithm>

//...

void findHighest( double nEast, double sEast, double nWest, double sWest )
{
   std::cout << "The biggest number is: " 
             << std::max( { nEast, sEast, nWest, sWest } )  << std::endl;
}

或者你可以写

void findHighest( double nEast, double sEast, double nWest, double sWest )
{
   double max = nEast;
   if ( max < sEast ) max = sEast;
   if ( max < nWest ) max = nWest;
   if ( nax < sWest ) max = sWest;

   std::cout << "The biggest number is: " 
             << max  << std::endl;
}

或使用数组的另一种解决方案

void findHighest( double nEast, double sEast, double nWest, double sWest )
{
   double regions[] = { nEast, sEast, nWest, sWest };       

   double max = regions[0];
   for ( double x : regions )
   {
      if ( max < x ) max = x;
   }

   std::cout << "The biggest number is: " 
             << max  << std::endl;
}

第一种和第三种解决方案基于 C++ 2011 的特性。但是在第三种解决方案中,您可以简单地将基于范围的 for 语句替换为普通的 for 循环。这是你的任务。:)

【讨论】:

  • 你应该指出第一个解决方案needs C++11 support
  • 最后一个也是。
  • @vlad_from_Moscow 感谢您的帮助。我实际上没有使用数组就解决了它,但是我想知道如何使用数组来解决它。
最近更新 更多