具有 2 个函数的简单程序不起作用
Simple program with 2 functions doesn`t work
我是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。
至少,你必须限定命名空间为 cout
、 cin
和 endl
,所有这些都在命名空间 std
中。
至于局部范围变量的问题,我会更改 masiv
的签名以返回包含最小值和最大值的std::pair<int,int>
:
typedef std::pair<int,int> MinMax;
MinMax massiv() { .... }
为什么不传递min
和max
引用? 因为您依赖于传递的引用的值。您必须检查它们是否合理等等。从函数本身返回最小值和最大值会使函数处于完全控制之下。
,你所有的变量都是在massiv()函数中局部定义的,首先是全局变量。
imin、min、imax 和 max 应该为函数 rezult() 全局访问它们。
- GDB 8.1 无法在单线程简单程序中跟踪 std::string 变量的值
- 令牌之前的简单程序预期标识符'('
- 带有类和链表的简单C++程序
- 引发未经处理的异常:简单 C++ 程序中的读取访问冲突,动态增加数组长度以存储数字
- C++链表简单程序崩溃
- 简单程序中的意外推力错误
- 未经GCC优化而编译的简单C++程序不会产生预期的结果
- 运行简单 c++ 程序时出现权限被拒绝错误
- 为什么我的简单C++程序使用队列和 fstream 错误到无效指针
- QT创建者:简单程序未解决的外部符号和外部符号错误
- 在VS2017上调试简单程序时访问冲突(RtlActivateActivationContextUnsafeFast)
- 无法为简单程序运行 docker 容器
- 布尔程序返回错误,即使应该是正确的.简单程序
- C++:帮助解释简单程序的行为
- 在使用小数的简单c++程序中遇到问题
- 简单程序的输入/输出问题
- 我在C中简单程序中的内存故障
- 简单程序没有输出和崩溃.我的解决方案有什么问题
- 简单C++程序上的多个未声明标识符
- C++,Visual Studio 2012和错误4700,用于简单程序中的类变量