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

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

08.01.2016, 01:38. Показов 2970. Ответов 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");
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.01.2016, 01:38
Ответы с готовыми решениями:

Передача двумерного массива в функцию
Начал изучать с++ в vs . Дошел до темы функции. Понял как передавать одномерный массив в функции. Решил попробовать передать...

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

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

35
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
08.01.2016, 02:12
Kristina_S, все не так. Такое ощущение, что в код накидали каких-то кусков другого исходника(ов). Стоит объяснять как вообще надо делать или будешь ждать готово решения?
0
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 204
08.01.2016, 02:36  [ТС]
объясни как делать
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
08.01.2016, 02:46
по порядку:
1. Массивы должны передаваться как массивы, т. е. компилятору должно быть известно как минимул количество элементов в строке. Луче объявить тип, чтобы не путаться:
C
1
typedef int matrix[N][M];
Объявить после этого можно просто
C
1
matrix a;
аналогично и передавать в функцию. Массивы в Си передаются по ссылке, поэтому возвращать ничего в твоем случае не нужно.

Добавлено через 2 минуты
2.
Цитата Сообщение от Kristina_S Посмотреть сообщение
a[i, j] < a[i, k]
Этот код делает совсем не то, что ты думаешь. Ты сравниваешь два указателя. Это не паскаль, тут так работать с массивами нельзя. Используй [][].
0
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 204
08.01.2016, 02:46  [ТС]
то есть что-то в духе
void foo(int **a,int a_lenght,int a_height)
а в выводе писать
cout << foo (a[n][m]); это уже в main-е
сама функциия сортирует строки
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
08.01.2016, 02:51
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 его элемент (как делаешь ты).
0
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 204
08.01.2016, 02:51  [ТС]
а в выводе что писать?
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
08.01.2016, 02:52
Ну и как писал выше, cout не будет выводить массив целиком без дополнительных усилий. К тому же ты возвращаешь void.
0
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 204
08.01.2016, 02:53  [ТС]
void foo(matrix a,N,M) так?
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
08.01.2016, 02:56
Цитата Сообщение от Kristina_S Посмотреть сообщение
именно наподобие того как я описала в шапке темы
Тогда тебе нужно создать массив указателей на указатели. В общем случае это не двухмерный массив уже. Но может использоваться и как аналог. Тогда мне не ясно требование:
Цитата Сообщение от Kristina_S Посмотреть сообщение
Массивы должны быть статическими.
Такая формулировка подразумевает, что они должны быть динамическими. Сделать конечно статическими можно при желании, но будет странно мягко говоря.

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

Добавлено через 2 минуты
Kristina_S, я уже не понимаю чего тебе надо: тебе принципиально, что бы в функцию данные передавались именно через указатель на указатель: т.е. void foo(int **a,int a_lenght,int a_height)?
0
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 204
08.01.2016, 03:00  [ТС]
Нет
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
08.01.2016, 03:02
Цитата Сообщение от Kristina_S Посмотреть сообщение
1)объявляется динамически двумерный массив
тогда будет как в задании - статический:
C
1
static matrix a;
Цитата Сообщение от Kristina_S Посмотреть сообщение
2)как он передается в функцию
void bubleMatrixSort(matrix a, int n, int m)
Цитата Сообщение от Kristina_S Посмотреть сообщение
3)нужно сделать его вывод в функции или мэйне?
лучше в функции.
0
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 204
08.01.2016, 03:16  [ТС]
выводить так?
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];
0
 Аватар для iRomul
163 / 104 / 14
Регистрация: 17.10.2012
Сообщений: 488
08.01.2016, 03:22
Нафига делать return a[N][M]? Во-первых выход за границы, а во-вторых - зачем?
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
08.01.2016, 03:23
Кинь код функции целиком.
Цитата Сообщение от Kristina_S Посмотреть сообщение
return Array[N][M];
Зачем ты пытаешься что-то возвращать из функции вывода?
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
08.01.2016, 03:23
Цитата Сообщение от shmkv Посмотреть сообщение
тогда будет как в задании - статический:
C++
1
static matrix a;
В задании, скорее всего, имеется ввиду - статически создаваемый (на стеке). Его и нужно, вместе с n и m, в функцию передавать.
Цитата Сообщение от Kristina_S Посмотреть сообщение
P.S. То что, N и M я ввела,это нам так препод говорить делать,мол мы вводим далее n и m чтобы использовать какой-то кусок массива.Массивы должны быть статическими.
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
08.01.2016, 03:28
Цитата Сообщение от iRomul Посмотреть сообщение
Во-первых выход за границы
В данном случае не обязательно выход за границы, но смысл не ясен.

Добавлено через 3 минуты
Цитата Сообщение от nord_v Посмотреть сообщение
статически создаваемый (на стеке)
Может я что-то упустил в новой терминологии языка, но переменные на стеке никак не являются статическими, они автоматические. Вспомни ключевое слово auto до 11го Стандарта С++, но практическому применению старого auto не нашлось т. к. все современные компиляторы и так делают переменные на стеке без прочих модификаторов автоматическими.
0
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 204
08.01.2016, 03:29  [ТС]
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.01.2016, 03:29
Помогаю со студенческими работами здесь

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

Передача двумерного массива в функцию
Добрый день! Для решения задачи мне нужно передать в функцию двумерный массив так, чтобы его элементы изменялись везде. Как это...

Передача двумерного массива в функцию
Всем доброго времени суток! В Си, при объявлении двумерного массива, можно было сразу проинициализировать его значения: char...

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru