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

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

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

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

09.10.2015, 23:19. Просмотров 220. Ответов 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: subscript requires array or pointer type - C++
Доброго времени суток! Подскажите, пожалуйста, что нужно изменить, чтобы пропала ошибка error C2109: subscript requires array or pointer...

Subscript requires array or pointer type - C++
Задание Нужно перегрузить операции для квадратной матрици Операции: - =, * =. но у меня не виходит ето зделать, подскажите,...

Работа с функциями и ошибка "Subscript requires array or pointer type" - C++
Ребят, такая проблема. вот код #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;cmath&gt; using namespace std; int...

error C2109 - C++
#include &lt;stdio.h&gt; #include &lt;iostream&gt; using std::endl; using std::cout; #include &lt;stdlib.h&gt; #include &lt;locale&gt; #define n AS ...

Invalid types `float[int]' for array subscript - C++
вот такой код, вроде всё написал правильно, но компилятор ругается на 19 строку, мол &quot;Invalid types `float' for array subscript&quot;. В чём...

Invalid types 'float[int]' for array subscript - C++
Выдает ошибку invalid types 'float' for array subscript в 44 и 48 строке. Не пойму что не так. Подскажите пожалуйста #include...

Ошибка: subscripted value is neither array nor pointer - C++
ввожу: scanf(&quot;%d&quot; &amp; min); даёт ошибку: subscripted value is neither array nor pointer .

error C2109: для индекса требуется массив или указатель. - C++
#include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;ctime&gt; using namespace std; struct Fin

Error C2109: для индекса требуется массив или указатель - C++
Есть код,делаю его в классы,вот выскочили ошибки,помогите исправить. class PID { private: double _Kp,_Ki,_Kd; double...

Error C2109: для индекса требуется массив или указатель - C++
Доброго времени суток! Будьте так добры помочь в данном вопросе, как сделать указатель для этой части кода: if(a&gt;0) { sum...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sn1p3rOk
281 / 168 / 66
Регистрация: 19.04.2014
Сообщений: 1,080
Завершенные тесты: 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];
            }
        }
    };
    // .   .   .
Ответ Создать тему
Опции темы

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