我对编程非常陌生,我只是在大学第一年的第二个学期,所以请轻松学习技术术语。我们被要求制作一个程序,从一个文件读取10个整数,组成一个列表,并要求用户输入一个整数'N'。如果列表中有'N',则程序应显示“FOUND”和“NOT FOUND”,否则显示。我主要关于参数的错误,它说函数调用中的'V','N'和'F'未在此范围内声明“。
#include<iostream>
#include<fstream>
using namespace std;
int fRead();
int iRead();
bool search(int, int);
void display(bool);
int main() {
fRead();
iRead();
search(V, N);
display(F);
return 0;
}
int fRead() {
int V[10], c;
ifstream fin;
fin.open("lab02.in");
for(c=0; c<10; c++)
fin >> V[10];
fin.close();
return V[10];
}
int iRead() {
int N;
cout << "Input an integer: ";
cin >> N;
return N;
}
bool search(int V[10], int N) {
bool F = false;
if(V[10] == N)
F = true;
return F;
}
void display(bool F) {
if(F == true)
cout << "\nFOUND" << endl;
else
cout << "\nNOT FOUND" << endl;
}
答案 0 :(得分:1)
局部变量(在函数内声明的那些变量)仅对于声明它们的块(由{
和}
分隔的那些内容)可见。如果要对各种操作使用不同的函数,则需要将变量作为参数传递给相应的函数。
另外,在使用结果之前,始终总是验证您的读取操作是否成功,例如:
int N(-1);
if (!(std::cin >> N)) {
std::cout << "ERROR: failed to read integer\n";
}
答案 1 :(得分:0)
整数V N和F基本上在其他函数中描述。 要解决此问题,您应该在main中声明它们 该计划应如下
void f_read(v[]);
void i_read(int &);
bool bool(int,int);
void disp(bool);
void main()
{
int v[10],n;
bool f;
f_read(v);
i_read(n);
f=bool(v,n);
disp(f);
}
void fRead()
{
int c;
ifstream fin;
fin.open("lab02.in");
for(c=0; c<10; c++)
fin >> V[c];
fin.close();
}
void iRead(int &n)
{
cout << "Input an integer: ";
cin >> N;
}
bool search(int V[10], int N)
{
bool F = false;
int i;
for(i=0;i<=9;i++)
if(V[i] == N)
{
F = true;
return F;
}
}
void display(bool F)
{
if(F == true)
cout << "\nFOUND" << endl;
else
cout << "\nNOT FOUND" << endl;
}
所以基本上你需要传递n作为参考变量,默认情况下数组作为参考传递。
你也在寻找v [10] = f,这会给你另一个数组,我也纠正了