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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
Eugene THE BEST
9 / 9 / 0
Регистрация: 14.02.2010
Сообщений: 126
#1

Передача двумерного массива - C++

03.01.2012, 22:45. Просмотров 1671. Ответов 6
Метки нет (Все метки)

Здравствуйте.
Требуется передать двумерный массив в функцию и там уже его использовать.
Все никак не получалось, полазил по результатам поиска, перепробовал различные способы, например, как тут Основы работ с циклами и функциями
и тут http://www.cyberforum.ru/cpp-beginne...ead365228.html
Итак, есть двумерный массив нулей/единиц определенного размера.
Внутри - нули и единицы. По сути мне нужно "обрезать" его, исключить крайние столбцы/строчки без единиц, допустим.
Есть массив picture1, массив объявлен правильно, перед этим я его много раз печатаю, так что все ок.
Это - переменные новых границ массива.
C++
1
2
3
4
leftk = left(picture1,widthk, heightk);
 rightk = right(picture1,widthk, heightk);
 topk = top(picture1,widthk, heightk);
 bottomk = bottom(picture1,widthk, heightk);
Создаю отдельно 4 функции - для каждой стороны.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int bottom(int *picture1,int row,int column)
  {
  int x=row,y=column;
   for (y = row; y >1 ;y++)
  {
  for (x = column;  x >1; x++)
  {
  if (picture1[x][y]==1)
  {
  return y;
  }
  }
  }
  }
Точно так же и остальные три, смысла особо нет писать.

Вылетает куча ошибок, начиная с какого-то непонятного Invalid Indirection в строке 8 второго кода.
А дальше - в первых четырех строчках сплошные Type mismatch (wanted 'int*', got 'int[*][200]')
Помогите пожалуйста, я что-то не понимаю, видимо.

Да, остальные недостатки кода я знаю, поэтому, прошу не сильно возмущаться массивом из 200 интов и т.д.
)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2012, 22:45     Передача двумерного массива
Посмотрите здесь:

Передача двумерного массива - C++
Помогите разобраться int func(int *arr) { arr=1; } void main(){ int arr; arr=1;

Передача двумерного массива - C++
Искал по поиску , но так и не получилось у меня решить мою проблему с передачей динамического двумерного массива #include<iostream> ...

передача двумерного массива - C++
Разработать программу с шаблонными функциями для типов int, float и double. Данные в функции передаются в качестве параметров....

Передача двумерного массива в функцию - C++
Доброго времени суток. Как можно передать двумерный массив в функцию? Допустим есть функция: void filingMatrix(??). Пробовал сделать: ...

Передача двумерного массива в функцию - C++
Всем доброго времени суток! В Си, при объявлении двумерного массива, можно было сразу проинициализировать его значения: char...

Передача двумерного массива в функцию - C++
Как я знаю, имя массива и указателя тождественны в С++. Из этого следует, что можно инициализировать указатель, а работать с ним, как с...

Передача двумерного массива в функцию. - C++
Требуется написать функцию которая бы слагала и умножала матрицы. Для этого Я завел двумерный динамический массив, а вот с передачей его в...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ProNoooob
72 / 72 / 6
Регистрация: 14.10.2009
Сообщений: 121
03.01.2012, 22:55     Передача двумерного массива #2
Цитата Сообщение от Eugene THE BEST Посмотреть сообщение
Да, остальные недостатки кода я знаю, поэтому, прошу не сильно возмущаться массивом из 200 интов и т.д.

По проблеме. Точнее проблемы то и нет.
Тебе в функцию нужно передать не указатель на int, а указатель на указатель на int.
int **picture1

И уже с ним работать привычным способом.
picture1[x][y]
Eugene THE BEST
9 / 9 / 0
Регистрация: 14.02.2010
Сообщений: 126
03.01.2012, 23:06  [ТС]     Передача двумерного массива #3
Не могли бы вы написать, что именно нужно добавить в
leftk = left(picture1,widthk, heightk);
Эту строчку(например)
И что - в описание функции.
Спасибо.
Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
03.01.2012, 23:06     Передача двумерного массива #4
Цитата Сообщение от Eugene THE BEST Посмотреть сообщение
Требуется передать двумерный массив в функцию и там уже его использовать.
Если размеры обоих индексов известны на этапе трансляции. Думаю, что это Ваш случай.
C++
1
2
3
4
5
6
7
8
9
10
#define dimm1 3
#define dimm2 4
...
void print_array( int array[ dimm1 ][ dimm2 ] ) {
    for ( size_t i = 0; i < dimm1; ++i ){
        for ( size_t j = 0; j < dimm2; ++j )
            cout << setw(5) << array[ i ][ j ] ;
    cout << endl;
    }
}
Если речь идет о динамическом двумерном массиве:
C++
1
2
3
4
5
6
7
void print_array( int** array, size_t dimm1, size_t dimm2 ) {
    for ( size_t i = 0; i < dimm1; ++i ){
        for ( size_t j = 0; j < dimm2; ++j )
            cout << setw(5) << array[ i ][ j ] ;
    cout << endl;
    }
}
Это примеры для c++, а для си чуть-чуть только поправить.
Eugene THE BEST
9 / 9 / 0
Регистрация: 14.02.2010
Сообщений: 126
03.01.2012, 23:08  [ТС]     Передача двумерного массива #5
Roof, Спасибо, сейчас попробую, но мне нужна не воид-функция, мне эти границы возвращать.
Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
03.01.2012, 23:15     Передача двумерного массива #6
Я не решал задание Ваше, я лишь ответил на вопрос:
Цитата Сообщение от Eugene THE BEST Посмотреть сообщение
Требуется передать двумерный массив в функцию и там уже его использовать.
Т.е. передав свой массив способом, который я указал - с ним можно работать внутри функции.
Дальше думайте самостоятельно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2012, 23:49     Передача двумерного массива
Еще ссылки по теме:

Передача двумерного массива в функцию - C++
Не нашел в поиске, как правильно передавать в функцию в качестве параметра двумерный массив произвольного размера, чтобы в функции была...

Передача в функцию двумерного массива - C++
Доброго времени суток. Есть двумерный массив, размерностью n на m. Нужно передать его в качестве параметра в функцию 1) обычным способом 2)...

Передача двумерного массива в функцию - C++
Неожиданно для себя столкнулся с такой вот проблемой . Есть две функции : void print_matrix(double ** A, int n) { for (int i = 0;...

Передача двумерного массива в функции - C++
Здравствуйте. В c++ недавно. Компилятор ругается. Как правильно передать двумерный массив в функции? И вообще, какие замечания по коду? ...

Передача двумерного массива в функцию - C++
в функцию set_ships передаю массив human, появляется ошибка cannot convert `int (*)' to `int**' for argument `1' to `void set_ships(int**)'...


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

Или воспользуйтесь поиском по форуму:
Eugene THE BEST
9 / 9 / 0
Регистрация: 14.02.2010
Сообщений: 126
03.01.2012, 23:49  [ТС]     Передача двумерного массива #7
Roof, Даа, замечательно, но как раз, как передать - то я и не знаю.
То есть - что написать при вызове функции?

Добавлено через 25 минут
Вау, я, кажется, смог, спасибо огромное!)
Yandex
Объявления
03.01.2012, 23:49     Передача двумерного массива
Ответ Создать тему
Опции темы

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