我应该编写一个应该从main()部分的输入数字读取的程序,然后在其他bool函数中进行一些计算。每次我调用它时,我都不想在函数中插入数字的所有数组和所有其他参数。
我的问题是:我可以在c ++中以某种方式在某些变量中读取输入,但是在main()之外的其他函数也会“知道”这些变量以及它们内部的内容,所以我没有当我调用函数时会放入很多参数?
这是代码:
#include <iostream>
using namespace std;
inline bool del(int n)
{
int i;
for(i=0;i<s1;i++)
{
if((n % a[i]) == 0) return true;
}
return false;
}
inline bool ned(int n)
{
int i;
for(i=0;i<s2;i++)
{
if((n % b[i]) != 0) return true;
}
return false;
}
int main(void)
{
int s1, s2, a[25], b[25];
int m, n, i, k=0;
bool d, nd;
cin >> s1 >> s2 >> m >> n;
for(i=0;i<s1;i++)
cin >> a[i];
for(i=0;i<s2;i++)
cin >> b[i];
for(i=m;i<=n;i++)
{
d = del(i);
nd = ned(i);
if(d == true && nd == true) ++k;
}
cout << k << endl;
return 0;
}
int s1,s2,a [25],b [25]&lt; - 这些是我需要被其他函数看到的变量(因为我使用它们,你可以看到)。
我尝试将它们声明为全局,但这不起作用,我得到的错误就像“未在此范围内声明”。
感谢您的帮助。
答案 0 :(得分:3)
由于这个原因使变量变为全局是一个坏习惯。要么只是将数组传递给函数,要么将整个事物变成对象,并使数组和函数成为类的成员。这就是OOP的意思。
答案 1 :(得分:0)
您所寻找的只是将变量放在全局范围内。我不知道你对“未在此范围内声明”错误的意思,因为以下工作正常:
#include <iostream>
using namespace std;
int s1, s2, a[25], b[25];
inline bool del(int n)
{
int x = s1 + s2;
int i;
for(i=0;i<s1;i++)
{
if((n % a[i]) == 0) return true;
}
return false;
}
inline bool ned(int n)
{
int i;
for(i=0;i<s2;i++)
{
if((n % b[i]) != 0) return true;
}
return false;
}
int main(void)
{
int m, n, i, k=0;
bool d, nd;
cin >> s1 >> s2 >> m >> n;
for(i=0;i<s1;i++)
cin >> a[i];
for(i=0;i<s2;i++)
cin >> b[i];
for(i=m;i<=n;i++)
{
d = del(i);
nd = ned(i);
if(d == true && nd == true) ++k;
}
cout << k << endl;
return 0;
}
如您所见,我已将它们全局声明并在del()中使用它们。
但是,这是不好的做法,您应该使用OOP w / structs或类来传递和组织数据。
答案 2 :(得分:-1)
你的声明不是全局的,只需将[25]和b [25]的声明移到main之外。