Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/75: Рейтинг темы: голосов - 75, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 8

Передача двумерного массива в функцию

18.10.2017, 21:51. Показов 15516. Ответов 7

Студворк — интернет-сервис помощи студентам
Приветствую всех. Помогите пожалуйста советом. Уже три вечера сижу над одной задачей.
Задача такая:
3. Используя функции сформировать с помощью ДСЧ двумерный мас-сив и вывести его на печать.
4. Выполнить обработку двумерного массива в соответствии с вариан-том, используя функции, результат вывести на печать.
Формирование, печать и обработку массивов и строк оформить в виде функции. Массивы передавать как параметры функций.
Реализовать массивы как псевдодинамические, их размерности переда-вать как параметры функций.
3. Формирование массивов выполнить с использованием ДСЧ. В масси-вы записывать и положительные, и отрицательные числа.
Функция main() должна содержать только описание массивов/строк и вызовы функций для формирования, печати и обработки масси-вов/строк.

С одномерным массивом все получилось как требуется, то есть главная функция содержит только описание массивов и вызов функций. А с двумерным никак не получается. Если я формирую массив в функции made(), то вызвать функцию для вывода массива получается только из функции made(), а при попытке вызова функции для вывода массива из главной функции, либо выдает ошибку, либо вылетает программа(как только не пробовал ссылаться).
Вот так работает, но функцию arrprint получается вызвать только из функции made.
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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void arrprint(int **arr, int n, int m) {
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++) {
cout << arr[i][j]<< ' ' << '\t';
}
cout << endl;
}
}
int made(int n, int m) {
setlocale(LC_ALL, "Rus");
cout<<"Введите количество строк ";
cin>>n;
cout<<"Введите количество столбцов ";
cin>>m;
int** p = new int*[m];
for(int i = 0; i < m; i++) {
p[i] = new int[n];
for(int j = 0; j < n; j++) {
p[i][j] = rand()%100-10;
}
}
arrprint(p,n,m);
for(int i = 0; i < m; i++) delete[] p[i];
        delete[] p;
}
int main()
{
int n,m,i;
int *p=NULL;
made(n,m);
     return 0;
}
Вот так тоже работает, но массив формируются в главной функции, что нельзя делать, исходя из полученного задания.
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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
void arrprint(int **arr, int n, int m) {
        for(int i = 0; i < m; i++) {
                for(int j = 0; j < n; j++) {
                        cout << arr[i][j]<< ' ' << '\t';
                }
                cout << endl;
        }
 
}
 
 
 
int main()
{
setlocale(LC_ALL, "Rus");
         int n,m,i;
 
               cout<<"Введите количество столбцов ";
        cin>>n;
        cout<<"Введите количество строк ";
        cin>>m;
        int** p = new int*[m];
        for(int i = 0; i < m; i++) {
                p[i] = new int[n];
                for(int j = 0; j < n; j++) {
                        p[i][j] = rand()%100-10;
                }
                
        }
        arrprint(p,n,m);
        for(int i = 0; i < m; i++) delete[] p[i];
        delete[] p;
     return 0;
  
        
}
Среда Dev-C++
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.10.2017, 21:51
Ответы с готовыми решениями:

Передача двумерного массива в функцию
Здравствуйте, появился новый вопрос на тему указателей: как передать двумерный массив в функцию ну и для проверки модифицировать его. ...

Передача двумерного массива в функцию
проблема в том что в функция inicil не изменяет похожу массива, и в output выводятся нелепые числа... #include &lt;iostream&gt; ...

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

7
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
18.10.2017, 22:02
Цитата Сообщение от Вячеслав Пальчи Посмотреть сообщение
int n,m,i;
int *p=NULL;
made(n,m);
интересно какие значение вы передаете в ф-ю?
0
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,561
18.10.2017, 22:03
почему made ничего не возвращает, или не изменяет?
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
19.10.2017, 10:11
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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void arrprint(int **arr, int n, int m) {
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            cout << arr[i][j] << ' ' << '\t';
        }
        cout << endl;
    }
}
void made() {
    int n, m;
    setlocale(LC_ALL, "Rus");
    cout << "Введите количество строк ";
    cin >> n;
    cout << "Введите количество столбцов ";
    cin >> m;
    int** p = new int*[m];
    for (int i = 0; i < m; i++) {
        p[i] = new int[n];
        for (int j = 0; j < n; j++) {
            p[i][j] = rand() % 100 - 10;
        }
    }
    arrprint(p, n, m);
    for (int i = 0; i < m; i++) delete[] p[i];
    delete[] p;
}
int main()
{
    srand(time(NULL));
    made();
    return 0;
}
0
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 8
19.10.2017, 13:07  [ТС]
Azazel-San, Ну по идее указатель на массив. Данный код просто для примера привел. Подскажите как вернуть массив из функции и передать его в другую функцию

Добавлено через 1 минуту
MansMI, вот это как раз и вопрос, как вернуть из функции made массив в главную функцию

Добавлено через 7 минут
afront, Спасибо за код, но мне необходимо, чтобы функция arrprint вызывалась c int main() а не с made()
0
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,561
19.10.2017, 13:16
свой int** p передать по ссылке и там сформировать
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
19.10.2017, 14:27
Лучший ответ Сообщение было отмечено Вячеслав Пальчи как решение

Решение

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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
void arrprint(int **arr, int n, int m) {
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            cout << arr[i][j] << ' ' << '\t';
        }
        cout << endl;
    }
}
void made(int **p, int n, int m) {
 
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++) {
            p[i][j] = rand() % 100 - 10;
        }
}
 
int main()
{
    srand(time(NULL));
    setlocale(LC_ALL, "Rus");
    int n, m;
    cout << "Введите количество строк ";
    cin >> n;
    cout << "Введите количество столбцов ";
    cin >> m;
    int** p = new int*[m];
    for (int i = 0; i < m; i++)
        p[i] = new int[n];
    made(p, n, m);
    arrprint(p, n, m);
    for (int i = 0; i < m; i++) delete[] p[i];
    delete[] p;
    return 0;
}
2
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 8
19.10.2017, 15:15  [ТС]
afront, Спасибо огромное. Я был близок. Я пробовал также, но не там указал вот эти строки
C++
1
2
for (int i = 0; i < m; i++)
        p[i] = new int[n];
Впредь буду знать. Еще раз спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.10.2017, 15:15
Помогаю со студенческими работами здесь

Передача двумерного массива в функцию
Доброго времени суток, форумчане. Столкнулся с проблемой передачи двумерного массива (матрицы) по указателю в функцию. Подскажите?...

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

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

Передача двумерного массива в функцию
Собственно, вот задание: Даны две матрицы целых чисел M, К. Найти среднее арифметическое значение для каждой из них. Как...

Передача двумерного массива в функцию
Здравствуйте! Написала код для передачи двумерного массива в функцию: #include &lt;iostream&gt; #include &lt;locale.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru