具有 2 个函数的简单程序不起作用

Simple program with 2 functions doesn`t work

本文关键字:简单 程序 不起作用 函数 具有      更新时间:2023-10-16

我是C++新手,并试图制作两个简单的函数,但出了点问题。

我正在尝试执行以下操作:

1.Function for input some data.
2.Function to show what data is input.

我只是想让它变得简单。到目前为止,我编写的代码是:

#include <iostream>
void masiv()
{
  int x[10];
  int n, i;
  int min;
  int max=0, imax=0, imin;
  cout << "Enter the number of elements: ";
  cin >> n;
  for(i=0; i < n; i++)
  {
      cout << "Input value for x["<<i<<"]=";
      cin >> x[i];
  if (min > x[i])
  {
      min = x [i];
      imin = i;
  }
  if (max < x[i])
  {
     max = x[i];
     imax = i;
  }
}
void rezult()
{
  cout << "the smallest value on is xthe biggest value on is x["<<imin<<"]=" << min <<endl;
  cout << "nai golqmata stoinost e na x["<<imax<<"]=" << max <<endl;
}
void main()
{
  masiv();
  rezult();
}

我遇到了一堆错误。我知道这是糟糕的代码,但正如我提到的,我才刚刚开始。谢谢

附言对不起我的英语

编辑:使用此代码。

#include <iostream>
using namespace std;
void masiv(int& min, int&max)
{
 int x[10];
 int n;
 int i;
 int imin, imax;
 cout << "Enter the number of elements: ";
 cin >> n;
 for(i=0; i < n; i++)
 {
  cout << "Input value for x["<<i<<"]=";
  cin >> x[i];
  if(min > x[i])
  {
    min = x [i];
    imin = i;
  }
  if(max < x[i])
  {
    max = x[i];
    imax = i;
  }
 }
}
 void rezult(int min, int max)
{
 cout << "the smallest value on is x= " << min << endl;
 cout << "the biggest value on is x= " << max << endl;
 system ("pause");
}
int main(int argc, char** argv)
{
 int min = 999999; 
 int max = -999999;
 masiv(min,max);
 rezult(min,max);
 return 0;
}

min 变量永远不会初始化,它应该初始化为一个大值。

您声明了一个数组int x[10];但稍后您允许用户输入值的数量cin>>n而不检查它是否大于 10 或负数。这可能会导致问题。

max 和 min 仅在函数 masiv() 中声明,它们无法在函数外部到达。如果你想让它们可访问,你可以将它们传递给函数,而不是在函数中声明它们:

void masiv(int& min, int&max) // pass by reference
{...}
void rezult(int min, int max)
{...}
int main(int argc, char** argv) // proper main prototype
{
   int min = 999999; 
   int max = -999999;
   masiv(min,max);
   rezult(min,max);
   return 0;
}

编辑 : 并使用命名空间 std 添加; 在文件开头

#include <iostream>
using namespace std;

这里需要考虑数据流。

您的主函数执行两个函数,但是数据如何从 massiv 函数或结果函数中取出?

您可以使用全局变量,也可以将主要结构设置为:

void main()
{
    int x[10];
    massiv(x);
    rezult(x);
}

rezult 函数应该处理 x 中的结果,并填充最小和最大变量。 将 if 语句从 massiv 移动到 rezult。

至少,你必须限定命名空间为 coutcinendl ,所有这些都在命名空间 std 中。

至于局部范围变量的问题,我会更改 masiv 的签名以返回包含最小值和最大值的std::pair<int,int>

typedef std::pair<int,int> MinMax;
MinMax massiv() { .... }

为什么不传递minmax引用? 因为您依赖于传递的引用的值。您必须检查它们是否合理等等。从函数本身返回最小值和最大值会使函数处于完全控制之下。

首先

,你所有的变量都是在massiv()函数中局部定义的,首先是全局变量。

iminminimaxmax 应该为函数 rezult() 全局访问它们。