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

Error C2109: subscript requires array or pointer - C++

Восстановить пароль Регистрация
 
Vorla
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 3
09.10.2015, 23:19     Error C2109: subscript requires array or pointer #1
В функциях Poisk и Show компилятор пишет, что индекс i в элементе массива x[i][j] должен иметь указатель на тип объекта.
Не могу понять, как это сделать ?

Код программы:
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <iomanip>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <locale.h>
#include <windows.h> 
 
using namespace std;
 
class bMass //abstract class
{
protected:
    int n, m;
public:
    virtual ~bMass(){ };
 
    virtual void Poisk() = 0;  // chisto virt func poiska;  
    virtual void show() = 0; //ГґГіГ*êöèÿ îòîáðГ*æåГ*ГЁГї Г¤Г*Г*Г*ûõ
    virtual void output() = 0; // ГґГіГ*êöèÿ âûâîäГ* ðåçóëüòГ*ГІГ* Г*Г* äèñïëåé
};
 
class InMass : public bMass
{
    int x, imax;
public:
    InMass(int N, int M){
        n = N;
        m = M;
        int **x = new int *[n]; // âûäåëåГ*ГЁГҐ ГЇГ*ìÿòè
        for (int i = 0; i < n; i++) // ïîä Г¬Г*òðèöó
            x[i] = new int[m];
        cout << "Zapolnite matricu:" << endl;
 
        for (int i = 0; i<n; i++) // ââîä Г¬Г*òðèöû
            for (int j = 0; j<m; j++)
            {
                cin >> x[i][j];
            }
    };
    ~InMass(){ };
 
    void Poisk(){
 
 
        int imax = 0;
        for (int i = 0; i<n; i++) {
 
            for (int j = 1; j<m; j++){
 
                if (x[i][j]> imax) {
                    imax = x[i][j];//ошибка
 
                }
            }
        }
        system("pause");
        return;
    };
    
    void output() {
        cout << "Max element is: " << imax << endl;
    }; // ГґГіГ*êöèÿ âûâîäГ* ðåçóëüòГ*ГІГ* Г*Г* äèñïëåé
    
    void show() {
 
        for (int *i = 0; i<n; i++) {
            for (int j = 0; j<m; j++)
                cout << x[i][j] << " ";//ошибка
            cout << endl;
        }
 
    }; //ГґГіГ*êöèÿ îòîáðГ*æåГ*ГЁГї Г¤Г*Г*Г*ûõ
 
};
 
int main(){
    system("cls");
    int M, N;
    cout << "Wedite kol-vo stroki stolbcov  matricui:";
    cin >> N >> M;
    cout << endl;
    while (true) {
 
        system("cls");
        cout << "Proved operation poisk max elem in matirx, size of " << N << " * " << M << endl;
        cout << "___________________________________________________" << endl;
        cout << "Select a matrix:" << endl;
        cout << "1.Integer Matrix" << endl;
        cout << "2.Char Matrix" << endl;
        cout << "3.Double Matrix" << endl;
        cout << "(For Exit press 4)" << endl;
        cout << '\n' << "Your choice is: " << flush;
        switch (cin.get()) {
 
        case '1': {
 
                    system("cls");
                    InMass *ptr = new InMass(N, M);
                    cout << "Input the elements of the matrix: " << flush;
                    cout << endl;
                    ptr->Poisk();
                    ptr->show();
                    ptr->output();
                    cout << '\n' << "Press any key fo return to menu.." << flush;
                    delete ptr;
                    cin.get (), cin.get ();
            } break;
        case '2': {}break;
        case '3': {}break;
        case '4':
            return 0;
 
        }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2015, 23:19     Error C2109: subscript requires array or pointer
Посмотрите здесь:

error C2109: для индекса требуется массив или указатель. C++
C++ Ошибка: subscripted value is neither array nor pointer
Subscript requires array or pointer type C++
C++ Error C2109: для индекса требуется массив или указатель
Error C2109: subscript requires array or pointer type C++
error C2109 C++
C++ Работа с функциями и ошибка "Subscript requires array or pointer type"
C++ Ошибка error: invalid types 'int[int]' for array subscript

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sn1p3rOk
 Аватар для Sn1p3rOk
281 / 168 / 66
Регистрация: 19.04.2014
Сообщений: 1,078
Завершенные тесты: 2
09.10.2015, 23:41     Error C2109: subscript requires array or pointer #2
x - у вас не массив а переменная, что вы пытаетесь с ней сделать ?

Добавлено через 12 минут
Вы в конструкторе InMass объявляете массив x, но он недоступен вне конструктора.
В классе у вас имеется поле int x именно к нему "обращается" запись x[i][j]
Исправленная часть кода
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
class InMass : public bMass
{
    int** x;
    int imax;
public:
    InMass(int N, int M)
    {
        n = N;
        m = M;
 
        x = new int* [n];
        for (int i = 0; i < n; i++)
        {
            x[i] = new int[m];
        }
 
        cout << "Zapolnite matricu:" << endl;
 
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
            {
                cin >> x[i][j];
            }
        }
    };
    // .   .   .
Yandex
Объявления
09.10.2015, 23:41     Error C2109: subscript requires array or pointer
Ответ Создать тему
Опции темы

Текущее время: 13:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru