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

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

Войти
Регистрация
Восстановить пароль
 
 
Kristina_S
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 179
#1

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

08.01.2016, 01:38. Просмотров 625. Ответов 35
Метки нет (Все метки)

Суть задачи такова,что нужно строки двумерной матрицы сортировать пузырьком.
Код написала,но основная проблема в том,что не могу понять как передать двумерный массив в функцию.укажите пожалуйста в чем ошибка и объясните
P.S. То что, N и M я ввела,это нам так препод говорить делать,мол мы вводим далее n и m чтобы использовать какой-то кусок массива.Массивы должны быть статическими.
То есть я считаю так,что передаю в функцию матрицу ,там она сортируется,а возвращаю уже отсортированную ,насчет индексов что-то не пойму.
Спасибо
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
42
43
44
45
46
47
48
#include <iostream>
using namespace std;
 
const int M = 100;
const int N = 100;
 
int buubleMatrixSort(int **a,int N,int M)
{
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            for (int k = 0; k < N; k++)
            {
                if (a[i, j] < a[i, k])
                {
                    int tmp = a[i][j];
                    a[i][j] = a[i][k];
                    a[i][k] = tmp;
                }
            }
        }
        return a[N][M];
    }
} 
int main()
{
    int n, m;
    cin >> n >> m;
    int a[N][M];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            a[i][j] = rand() % 10;
        }
    }
    for (int i = 0; i < n; cout << endl, i++)
    {
        for (int j = 0; j < m; j++)
        {
            cout << a[i][j];
        }
    }
    cout << endl;
    cout << buubleMatrixSort(a[n][m], n, m);
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2016, 01:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача двумерного статистического массива в функцию (C++):

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

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

Передача двумерного массива в функцию - C++
Даны две квадратные матрицы nxn. Напечатать ту из них, которая имеет минимальный “след” (т.е. сумму элементов главной диагонали). При...

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
shmkv
566 / 280 / 37
Регистрация: 21.07.2015
Сообщений: 855
08.01.2016, 02:12 #2
Kristina_S, все не так. Такое ощущение, что в код накидали каких-то кусков другого исходника(ов). Стоит объяснять как вообще надо делать или будешь ждать готово решения?
Kristina_S
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 179
08.01.2016, 02:36  [ТС] #3
объясни как делать
shmkv
566 / 280 / 37
Регистрация: 21.07.2015
Сообщений: 855
08.01.2016, 02:46 #4
по порядку:
1. Массивы должны передаваться как массивы, т. е. компилятору должно быть известно как минимул количество элементов в строке. Луче объявить тип, чтобы не путаться:
C
1
typedef int matrix[N][M];
Объявить после этого можно просто
C
1
matrix a;
аналогично и передавать в функцию. Массивы в Си передаются по ссылке, поэтому возвращать ничего в твоем случае не нужно.

Добавлено через 2 минуты
2.
Цитата Сообщение от Kristina_S Посмотреть сообщение
a[i, j] < a[i, k]
Этот код делает совсем не то, что ты думаешь. Ты сравниваешь два указателя. Это не паскаль, тут так работать с массивами нельзя. Используй [][].
Kristina_S
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 179
08.01.2016, 02:46  [ТС] #5
то есть что-то в духе
void foo(int **a,int a_lenght,int a_height)
а в выводе писать
cout << foo (a[n][m]); это уже в main-е
сама функциия сортирует строки
shmkv
566 / 280 / 37
Регистрация: 21.07.2015
Сообщений: 855
08.01.2016, 02:51 #6
3. cout не умеет выводить сам массивы. Опиши отдельную вывода (ее содержимое уже у тебя есть). Вызывай ее до и после сортировки.

Добавлено через 2 минуты
Цитата Сообщение от Kristina_S Посмотреть сообщение
то есть что-то в духе
void foo(int **a,int a_lenght,int a_height)
а в выводе писать
cout << foo (a[n][m]); это уже в main-е
Нет все не так: объявлять как void foo(matrix a... И передавать надо массив целиком, а не 1 его элемент (как делаешь ты).
Kristina_S
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 179
08.01.2016, 02:51  [ТС] #7
а в выводе что писать?
shmkv
566 / 280 / 37
Регистрация: 21.07.2015
Сообщений: 855
08.01.2016, 02:52 #8
Ну и как писал выше, cout не будет выводить массив целиком без дополнительных усилий. К тому же ты возвращаешь void.
Kristina_S
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 179
08.01.2016, 02:53  [ТС] #9
void foo(matrix a,N,M) так?
shmkv
566 / 280 / 37
Регистрация: 21.07.2015
Сообщений: 855
08.01.2016, 02:56 #10
Цитата Сообщение от Kristina_S Посмотреть сообщение
именно наподобие того как я описала в шапке темы
Тогда тебе нужно создать массив указателей на указатели. В общем случае это не двухмерный массив уже. Но может использоваться и как аналог. Тогда мне не ясно требование:
Цитата Сообщение от Kristina_S Посмотреть сообщение
Массивы должны быть статическими.
Такая формулировка подразумевает, что они должны быть динамическими. Сделать конечно статическими можно при желании, но будет странно мягко говоря.

Добавлено через 1 минуту
Цитата Сообщение от Kristina_S Посмотреть сообщение
void foo(matrix a,N,M) так?
не указала типы N и M.
Kristina_S
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 179
08.01.2016, 02:56  [ТС] #11
Эмм,на сонную голову не соображаю уже ничего.
Тогда можешь мне пожалуйста написать фрагмент кода где
1)объявляется динамически двумерный массив
2)как он передается в функцию
3)нужно сделать его вывод в функции или мэйне?
извини ,что тупая такая(
shmkv
566 / 280 / 37
Регистрация: 21.07.2015
Сообщений: 855
08.01.2016, 02:59 #12
и лучше используй маленькие буквы, чтобы не путаться со своими глобальными константами.

Добавлено через 2 минуты
Kristina_S, я уже не понимаю чего тебе надо: тебе принципиально, что бы в функцию данные передавались именно через указатель на указатель: т.е. void foo(int **a,int a_lenght,int a_height)?
Kristina_S
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 179
08.01.2016, 03:00  [ТС] #13
Нет
shmkv
566 / 280 / 37
Регистрация: 21.07.2015
Сообщений: 855
08.01.2016, 03:02 #14
Цитата Сообщение от Kristina_S Посмотреть сообщение
1)объявляется динамически двумерный массив
тогда будет как в задании - статический:
C
1
static matrix a;
Цитата Сообщение от Kristina_S Посмотреть сообщение
2)как он передается в функцию
void bubleMatrixSort(matrix a, int n, int m)
Цитата Сообщение от Kristina_S Посмотреть сообщение
3)нужно сделать его вывод в функции или мэйне?
лучше в функции.
Kristina_S
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 179
08.01.2016, 03:16  [ТС] #15
выводить так?
C++
1
2
3
4
5
6
7
8
for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            cout <<Array[i][j];
        }
    }
    return Array[N][M];
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2016, 03:16
Привет! Вот еще темы с ответами:

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

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

Передача двумерного массива в функцию - C++
Не могу передать массив в фунцию int min(int Array) { int min = 0; min = Array; for(int i=0;i&lt;3;i++){ for(int...

Передача двумерного массива в функцию - C++
Возможно это уже и естьна форуме, но как передать из одной функции в другую двумерный массив? (статическое распределение адресов)


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.01.2016, 03:16
Ответ Создать тему
Опции темы

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