@parkito

Как вывести элемент двумерного массива в функции?

Здравствуйте. Подскажите, пожалуйста, почему следующий код - функция для вывода элемента массива - не работает.

#include<iostream>

using namespace std;

int **transpose(const int *const *m, unsigned rows, unsigned cols);

void show(const int *const *m, unsigned rows, unsigned cols);

int main() {

    int a[2][2] = {{1, 2},
                   {2, 1}};

    cout << a[0][0];
    show((const int *const *) a, 2, 2);
    return 0;
}

void show(const int *const *m, unsigned rows, unsigned cols) {
    cout << m[0][0];

}


Функция, по условию задачи, принимать const int *const *m обязательно.
  • Вопрос задан
  • 789 просмотров
Решения вопроса 1
bogdanov-s
@bogdanov-s
Че-то там программирую
Разве можно int [][] привести const int *const *?
Обьявите масив как-то так
int n = 2;
int m = 2;
int** a = new int*[m];
for(int i = 0; i < n; ++i){
	a[i] = new int[n]{1,2};
}

и все наладится
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
void show(const int *const *m, unsigned rows, unsigned cols) 
{
	for(int i=0; i<rows;++i){
		for(int j=0; j<cols;++j){
			cout << m[j+i*cols] << " ";
		}
		cout << endl;
	}
}
Ответ написан
Комментировать
@Free_ze
Пишу комментарии в комментарии, а не в ответы
Примерно так: ideone.com/Q9hMqP
void show(const int *const *m, unsigned rows, unsigned cols) {
    for (int i=0; i<rows; ++i) {
        for (int j=0; j<rows; ++j) {
            cout << m[i][j] << " | ";
        }
        cout << endl;
    }
}

int main() {
    const size_t ARRAY_SIZE = 2;
    int a[ARRAY_SIZE][ARRAY_SIZE] = 
                                    {{1, 2},
                                    {2, 1}};


    int **b = new int*[ARRAY_SIZE];
    for (int i=0; i<ARRAY_SIZE; ++i) {
        b[i] = a[i];
    }

    show(b, ARRAY_SIZE, ARRAY_SIZE);

    delete b;
    return 0;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы