“'X'未在此范围内声明”错误

时间:2014-02-22 11:31:53

标签: c++

我对编程非常陌生,我只是在大学第一年的第二个学期,所以请轻松学习技术术语。我们被要求制作一个程序,从一个文件读取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;
}

2 个答案:

答案 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,这会给你另一个数组,我也纠正了