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

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

Восстановить пароль Регистрация
 
 
Kristina_S
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 166
08.01.2016, 01:38     Передача двумерного статистического массива в функцию #1
Суть задачи такова,что нужно строки двумерной матрицы сортировать пузырьком.
Код написала,но основная проблема в том,что не могу понять как передать двумерный массив в функцию.укажите пожалуйста в чем ошибка и объясните
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++
C++ Передача двумерного массива в функцию
Передача двумерного массива в функцию C++
C++ Передача двумерного массива в функцию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
shmkv
539 / 253 / 28
Регистрация: 21.07.2015
Сообщений: 756
08.01.2016, 02:12     Передача двумерного статистического массива в функцию #2
Kristina_S, все не так. Такое ощущение, что в код накидали каких-то кусков другого исходника(ов). Стоит объяснять как вообще надо делать или будешь ждать готово решения?
Kristina_S
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 166
08.01.2016, 02:36  [ТС]     Передача двумерного статистического массива в функцию #3
объясни как делать
shmkv
539 / 253 / 28
Регистрация: 21.07.2015
Сообщений: 756
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
Сообщений: 166
08.01.2016, 02:46  [ТС]     Передача двумерного статистического массива в функцию #5
то есть что-то в духе
void foo(int **a,int a_lenght,int a_height)
а в выводе писать
cout << foo (a[n][m]); это уже в main-е
сама функциия сортирует строки
shmkv
539 / 253 / 28
Регистрация: 21.07.2015
Сообщений: 756
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
Сообщений: 166
08.01.2016, 02:51  [ТС]     Передача двумерного статистического массива в функцию #7
а в выводе что писать?
shmkv
539 / 253 / 28
Регистрация: 21.07.2015
Сообщений: 756
08.01.2016, 02:52     Передача двумерного статистического массива в функцию #8
Ну и как писал выше, cout не будет выводить массив целиком без дополнительных усилий. К тому же ты возвращаешь void.
Kristina_S
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 166
08.01.2016, 02:53  [ТС]     Передача двумерного статистического массива в функцию #9
void foo(matrix a,N,M) так?
shmkv
539 / 253 / 28
Регистрация: 21.07.2015
Сообщений: 756
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
Сообщений: 166
08.01.2016, 02:56  [ТС]     Передача двумерного статистического массива в функцию #11
Эмм,на сонную голову не соображаю уже ничего.
Тогда можешь мне пожалуйста написать фрагмент кода где
1)объявляется динамически двумерный массив
2)как он передается в функцию
3)нужно сделать его вывод в функции или мэйне?
извини ,что тупая такая(
shmkv
539 / 253 / 28
Регистрация: 21.07.2015
Сообщений: 756
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
Сообщений: 166
08.01.2016, 03:00  [ТС]     Передача двумерного статистического массива в функцию #13
Нет
shmkv
539 / 253 / 28
Регистрация: 21.07.2015
Сообщений: 756
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
Сообщений: 166
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];
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 1
08.01.2016, 03:22     Передача двумерного статистического массива в функцию #16
Нафига делать return a[N][M]? Во-первых выход за границы, а во-вторых - зачем?
shmkv
539 / 253 / 28
Регистрация: 21.07.2015
Сообщений: 756
08.01.2016, 03:23     Передача двумерного статистического массива в функцию #17
Кинь код функции целиком.
Цитата Сообщение от Kristina_S Посмотреть сообщение
return Array[N][M];
Зачем ты пытаешься что-то возвращать из функции вывода?
nord_v
227 / 176 / 69
Регистрация: 22.08.2013
Сообщений: 723
08.01.2016, 03:23     Передача двумерного статистического массива в функцию #18
Цитата Сообщение от shmkv Посмотреть сообщение
тогда будет как в задании - статический:
C++
1
static matrix a;
В задании, скорее всего, имеется ввиду - статически создаваемый (на стеке). Его и нужно, вместе с n и m, в функцию передавать.
Цитата Сообщение от Kristina_S Посмотреть сообщение
P.S. То что, N и M я ввела,это нам так препод говорить делать,мол мы вводим далее n и m чтобы использовать какой-то кусок массива.Массивы должны быть статическими.
shmkv
539 / 253 / 28
Регистрация: 21.07.2015
Сообщений: 756
08.01.2016, 03:28     Передача двумерного статистического массива в функцию #19
Цитата Сообщение от iRomul Посмотреть сообщение
Во-первых выход за границы
В данном случае не обязательно выход за границы, но смысл не ясен.

Добавлено через 3 минуты
Цитата Сообщение от nord_v Посмотреть сообщение
статически создаваемый (на стеке)
Может я что-то упустил в новой терминологии языка, но переменные на стеке никак не являются статическими, они автоматические. Вспомни ключевое слово auto до 11го Стандарта С++, но практическому применению старого auto не нашлось т. к. все современные компиляторы и так делают переменные на стеке без прочих модификаторов автоматическими.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2016, 03:29     Передача двумерного статистического массива в функцию
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Kristina_S
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 166
08.01.2016, 03:29  [ТС]     Передача двумерного статистического массива в функцию #20
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
49
50
51
52
53
54
55
56
57
58
#include <iostream>
using namespace std;
const int M = 100;
const int N = 100;
int A[N][M];
int bubleMatrixSort()
{
    int n, m;
    cout << "vvedite kol-vo strok i stolbtsov sootvetstvenno" << endl;
    cin >> n >> m;
    int Array[N][M];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            Array[i][j] = rand() % 10;
        }
    }
    for (int i = 0; i < n; cout << endl, i++)
    {
        for (int j = 0; j < m; j++)
        {
            cout << Array[i][j];
        }
    }
    // Заполнение и вывод.
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j <m; j++)
        {
            for (int k = 0; k < n; k++)
            {
                if (Array[i][j] < Array[i] [k])
                {
                    int tmp = Array[i][j];
                    Array[i][j] = Array[i][k];
                    Array[i][k] = tmp;
                }
            }
        }
    }
    // Сортировка
    cout << "Otsortirovannii massiv" << endl;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            cout <<Array[i][j];
        }
    }
    // Вывод сортированного массива
    return Array[n][m];
} 
int main()
{
    cout << endl;
    cout << bubleMatrixSort;
}
Yandex
Объявления
08.01.2016, 03:29     Передача двумерного статистического массива в функцию
Ответ Создать тему
Опции темы

Текущее время: 21:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru