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

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

Войти
Регистрация
Восстановить пароль
 
MurderKnot
-98 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 32
#1

Ошибка "неверный тип для индекса массива" при работе с двумерным массивом - C++

15.10.2013, 14:27. Просмотров 307. Ответов 5
Метки нет (Все метки)

Возникла вот такая проблемы при выполнении работы:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int step_right(int *a,int n,int m,int i,int j){
  int flower = 0;
  if ((n<i)&&(m<j-1)){
      flower+=a[n][m]-a[n][m+1]; //неверный тип для индекса массива для переменной m
    }
  else{
      flower+=0;
    }
  return flower;
}
 
int step_right2(int *a, int n, int m, int i, int j){
  int flower = 0;
  if ((n<i)&&(m<j-2)){
      flower+=2*(a[n][m]-a[n][m+2]); //неверный тип для индекса массива  для переменной m
    } 
  else{
      flower+=0;
    }
  return flower;
}
Прошу помощи, ибо перерыл уже весь форум всю сеть и ничего толком не нашёл. С одномерным массивом такого не происходит. Если есть ошибка, то прошу пояснить её суть, если не сложно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2013, 14:27     Ошибка "неверный тип для индекса массива" при работе с двумерным массивом
Посмотрите здесь:

C++ Выдает ошибку "Неверный тип для индекса массива"
Ошибка при работе с OpenCV: "нарушение прав доступа при чтении по адресу" C++
Ошибка при работе с графикой. Не распознается библиотека "cstdlib" C++
C++ Ошибка "Попытка чтения в запрещенную память" при работе с файлами
C++ Ошибка с массивом: программа при вводе "ступорится" при нажатии клавиши Enter
Ошибка "Access violation writing location" при работе с массивом. C++
Ошибка "error C2109: для индекса требуется массив или указатель" C++
Ошибка при работе с массивом: "Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted." C++
Ошибка при работе со списком: "Сбой при преобразовании в COFF: Файл недопустим или поврежден" C++
C++ При работе с free в деструкторе ошибка "Invalid address specified to RtlValidateHeap"
Ошибка "в вызове функции отсутствует список аргументов" при работе с классами C++
C++ Ошибка "error C4430: missing type specifier" при работе с fstream

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 555
15.10.2013, 14:43     Ошибка "неверный тип для индекса массива" при работе с двумерным массивом #2
MurderKnot, двумерный нельзя так в функцию передавать
вот так можно например
C++
1
int step_right(int a[5][5],int n,int m,int i,int j){
MurderKnot
-98 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 32
15.10.2013, 15:39  [ТС]     Ошибка "неверный тип для индекса массива" при работе с двумерным массивом #3
newb_programmer, но можно же работать с двумерном массивом в функции?
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 555
15.10.2013, 16:22     Ошибка "неверный тип для индекса массива" при работе с двумерным массивом #4
MurderKnot, конечно, почему нет?)
MrGluck
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6220 / 3465 / 423
Регистрация: 29.11.2010
Сообщений: 9,176
15.10.2013, 16:34     Ошибка "неверный тип для индекса массива" при работе с двумерным массивом #5
MurderKnot, а лучше использовать динамические массивы и передавать в функцию вот так:
C++
1
void foo(int *arr, const int size1, const int size2) { ... }
Добавлено через 19 секунд
И не использовать частные случаи для решения общей задачи
MurderKnot
-98 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 32
15.10.2013, 16:46  [ТС]     Ошибка "неверный тип для индекса массива" при работе с двумерным массивом #6
нашёл способ, если писать
C++
1
int step_right(int **a, int i, int j, int n, int m)
То можно передавать двумерный массив в функцию!

В итоге написал:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int step_right(int **a,int n,int m,int i,int j){
  int flower = 0;
  if ((n<i)&&(m<j-1)){
      flower+=a[n][m]-a[n][m+1];
    }
  else{
      flower+=0;
    }
  return flower;
}
 
int step_right2(int **a, int n, int m, int i, int j){
  int flower = 0;
  if ((n<i)&&(m<j-2)){
      flower+=2*(a[n][m]-a[n][m+2]);
    } 
  else{
      flower+=0;
    }
  return flower;
}
и ошибку больше не выводит
Yandex
Объявления
15.10.2013, 16:46     Ошибка "неверный тип для индекса массива" при работе с двумерным массивом
Ответ Создать тему
Опции темы

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