Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Best_Coder
0 / 0 / 0
Регистрация: 18.09.2014
Сообщений: 81
#1

Identifier not found - C++

23.11.2014, 08:08. Просмотров 902. Ответов 2
Метки нет (Все метки)

Объясните пожалуйста почему компилятор выдаёт эту ошибку,и как лучше избегать таких моментов?

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <conio.h>
 
using namespace std;
 
void ArrayPrint(int* &M,int n){
    for (int i(0);i>n;i++){
    cout<< M[i] <<"  ";
    }
 
} 
 
void ArrayBuild(int n){
    
    int *A = new int[n];
    for(int i(0);i<n;i++)
        A[i] = rand() % 201-100;
    
    cout<<"Массив :";
    ArrayPrint(A,n);
    cout<<"\n";
    Positive(A,n);
 
}
 
void Positive(int* &M,int n){
 
    for(int i(1);i<n;i++){
        if (M[i]>=0 && M[i+1]>=0){
            cout <<"Первая пара соседних положительныйх элементов массива "<<M[i]<<" и "<<M[i+1]<<endl;
            break;}
        else if (M[n]) cout <<"Cоседних положительныйх элементов в массиве нет."<<endl;
        }
 
    for(int i(n);i>0;i--){
        if (M[i]>=0 && M[i-1]>=0){
            cout <<"Последняя пара соседних положительныйх элементов массива "<<M[i]<<" и "<<M[i+1]<<endl;
            break;}
        else if (M[0]) cout <<"Cоседних положительныйх элементов в массиве нет."<<endl;
        }
    }
 
void main(){
    setlocale(LC_ALL,"Rus");
char exit;
int n;
 
    do{
        cout<<"Количество элементов : ";
        cin>>n;
        ArrayBuild(n);
    }while(cin>>exit && exit=='y');
 
}


Добавлено через 9 минут
Почему функции ArrayPrint и Positive должны располагаться над ArrayBuild?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2014, 08:08     Identifier not found
Посмотрите здесь:

C++ "Identifier not found" при использовании функции system()
C++ Ошибка undeclared identifier
C++ Ошибка компиляции (undeclared identifier)??
Error C3861: 'convert_close': identifier not found //ошибка C++
C++ Ошибка в коде ('sqrt': identifier not found)
C++ Ошибка C3861 'time': identifier not found
C++ Ошибка identifier not found
C++ Identifier not found при вызове функции
Identifier is undefined C++
C++ Error C3861: 'stof': identifier not found
Не могу найти ошибку 'mmxPar': identifier not found C++
Strcpy identifier not found C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12887 / 7273 / 810
Регистрация: 27.09.2012
Сообщений: 17,972
Записей в блоге: 2
Завершенные тесты: 1
23.11.2014, 08:25     Identifier not found #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Best_Coder Посмотреть сообщение
Почему функции ArrayPrint и Positive должны располагаться над ArrayBuild?
грубо говоря, потому что, когда компилятор доходит до строчки ArrayPrint(A,n); он не знает что такое ArrayPrint и с чем его едят, поэтому и вылезает ошибка. Но необязательно функцию ArrayPrint определять до ArrayBuild, можно лишь объявить её:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
void ArrayPrint(int* &,int) ;
void Positive(int* &,int) ;
 
void ArrayBuild(int n){
    
    int *A = new int[n];
    for(int i(0);i<n;i++)
        A[i] = rand() % 201-100;
    
    cout<<"Массив :";
    ArrayPrint(A,n);
    cout<<"\n";
    Positive(A,n);
 
}
 
void ArrayPrint(int* &M,int n){
    for (int i(0);i>n;i++){
    cout<< M[i] <<"  ";
    }
 
} 
 
void Positive(int* &M,int n){
 
    for(int i(1);i<n;i++){
        if (M[i]>=0 && M[i+1]>=0){
            cout <<"Первая пара соседних положительныйх элементов массива "<<M[i]<<" и "<<M[i+1]<<endl;
            break;}
        else if (M[n]) cout <<"Cоседних положительныйх элементов в массиве нет."<<endl;
        }
 
    for(int i(n);i>0;i--){
        if (M[i]>=0 && M[i-1]>=0){
            cout <<"Последняя пара соседних положительныйх элементов массива "<<M[i]<<" и "<<M[i+1]<<endl;
            break;}
        else if (M[0]) cout <<"Cоседних положительныйх элементов в массиве нет."<<endl;
        }
    }
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3614 / 1889 / 501
Регистрация: 18.10.2014
Сообщений: 3,451
23.11.2014, 09:43     Identifier not found #3
Цитата Сообщение от Best_Coder Посмотреть сообщение
Почему функции ArrayPrint и Positive должны располагаться над ArrayBuild?
Потому что так устроен язык С++. В языке С++ разрешается использовать только те имена, которые были заранее объявлены где-то выше по коду.

В языке С когда-то разрешалось использовать необъявленные имена, но и в С эта практичка была запрещена в стандарте 1999 года.
Yandex
Объявления
23.11.2014, 09:43     Identifier not found
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru