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

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

Войти
Регистрация
Восстановить пароль
 
regger
Сообщений: n/a
#1

Напечатать двухмерный массив через функцию - C++

17.08.2013, 16:02. Просмотров 276. Ответов 3
Метки нет (Все метки)

Ошибка \main.cpp|26|error: cannot convert 'int (*)[5]' to 'int**' for argument '1' to 'void print(int**, int, int)'|

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
#include <iostream>
 
 
using namespace std;
 
void print(int **mas, int w, int h) {
    for (int i = 0; i < h; i++ ) {
        for (int j = 0; j < w; j++)
            cout << mas[i][j] << ' ';
 
        cout << endl;
    }
}
 
 
int main() {
 
    int mas[3][5] = {
        {10, 11, 12, 13, 14},
        {20, 21, 22, 23, 24},
        {30, 31, 32, 33, 34},
    };
 
    print(mas, 5, 3);
 
    cin.get();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2013, 16:02     Напечатать двухмерный массив через функцию
Посмотрите здесь:
Передать двухмерный массив в функцию C++
Как передать двухмерный массив в функцию? C++
Как в функцию передать параметр - двухмерный массив C++
C++ Передать в функцию динамический двухмерный массив с динамическими размерами
как передать в функцию двухмерный динамический массив по ссылке C++
Написать функцию, которая распечатывает двухмерный массив в виде таблицы. C++
C++ Напечатать через функцию все трехзначные натуральные числа
C++ Массив через функцию
C++ массив через функцию
Динамический массив через функцию C++
массив через функцию для начинашек C++
C++ Перекладывание массива в массив через функцию

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stragger
38 / 38 / 2
Регистрация: 05.12.2011
Сообщений: 343
17.08.2013, 16:15     Напечатать двухмерный массив через функцию #2
ну если конкретно для этого случая
C
1
void print(int mas[][5], int w, int h)
А чтобы работать с
C
1
void print(int **mas, int w, int h)
выделение памяти под массив должно происходить динамически
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
17.08.2013, 16:15     Напечатать двухмерный массив через функцию #3
Очень мало языков поддерживают настоящие многомерные массивы. Deal with it.
C++
1
2
3
4
5
6
7
8
void print(int *mas, int w, int h) {
    for (int i = 0; i < h; i++ ) {
        for (int j = 0; j < w; j++)
            cout << mas[i * w + j] << ' ';
 
        cout << endl;
    }
}
no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 324
17.08.2013, 17:25     Напечатать двухмерный массив через функцию #4
Цитата Сообщение от regger Посмотреть сообщение
Ошибка \main.cpp|26|error: cannot convert 'int (*)[5]' to 'int**' for argument '1' to 'void print(int**, int, int)'|
Вы используете двойную косвенную адресацию. Стандартные массивы (стековые) не так организованы. Для правильной работы:

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
#include <iostream>
#include <conio.h>
using namespace std;
 
void print(int (*mas)[5], int w, int h) {
    for (int i = 0; i < w; i++ ) {
        for (int j = 0; j < h; j++)
            cout << (*(mas + i))[j] << ' ';
 
        cout << endl;
    }
}
 
void main() {
 
    int mas[3][5] = {
        {10, 11, 12, 13, 14},
        {20, 21, 22, 23, 24},
        {30, 31, 32, 33, 34},
    };
 
    print(mas, 3, 5);
 
getch();
}
Yandex
Объявления
17.08.2013, 17:25     Напечатать двухмерный массив через функцию
Ответ Создать тему
Опции темы

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