我是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();
}
我有很多错误。我知道这是糟糕的代码,但正如我所提到的,我刚开始。 感谢
P.S。对不起我的英文
编辑:使用此代码。
#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;
}
答案 0 :(得分:6)
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;
答案 1 :(得分:2)
至少,您必须限定cout
,cin
和endl
的命名空间,所有这些命名空间都在命名空间std
中。
至于本地范围变量的问题,我会更改masiv
的签名以返回包含最小值和最大值的std::pair<int,int>
:
typedef std::pair<int,int> MinMax;
MinMax massiv() { .... }
为什么通过引用传递min
和max
?因为你依赖于传递的引用的值。你必须检查它们是否合理等等。从函数本身返回最小值和最大值可使函数完全控制。
答案 2 :(得分:2)
您需要在此处考虑数据流。
你的main函数执行两个函数,但数据是如何从massiv函数或结果函数中获得的?
您可以使用全局变量,也可以使主体结构更像:
void main()
{
int x[10];
massiv(x);
rezult(x);
}
rezult函数应该在x中处理结果并填充min和max变量。将if语句从massiv移到rezult。
答案 3 :(得分:-3)
首先,所有变量都是在massiv()函数中本地定义的,首先是全局变量。
答案 4 :(得分:-3)
你 imin , min , imax 和 max 应该为函数rezult()提供全局访问权限