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

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

Войти
Регистрация
Восстановить пароль
 
Serge666
0 / 0 / 0
Регистрация: 21.02.2014
Сообщений: 25
#1

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

10.04.2014, 12:42. Просмотров 673. Ответов 6
Метки нет (Все метки)

Вводится две квадратные матрицы разного размера, посчитать сумму модулей отрицательных элементов каждой матрицы, и среднее значение 2-х сумм модулей отрицательных чисел.
(с помощью функции)

Помогите, нужно через одну функцию, но т.к они разного размера,у меня через одну не получается, можно ли вообще это сделать? если можно, то как, покажите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2014, 12:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача в функцию двумерного массива (C++):

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

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

Передача двумерного массива в функцию - C++
Здравствуйте! Написала код для передачи двумерного массива в функцию: #include <iostream> #include <locale.h> #include...

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
palva
2606 / 1828 / 262
Регистрация: 08.06.2007
Сообщений: 6,986
Записей в блоге: 4
10.04.2014, 13:23 #2
В функции рассматривать матрицу как одномерный массив, передавать в функцию дополнительный параметр n = размер матрицы. Внутри функции при работе с индексами i j вычислять индекс одномерного массива, то есть вместо [i][j] писать [i*n+j]. При обращении к функции в качестве матрицы передавать адрес первого элемента матрицы.
Serge666
0 / 0 / 0
Регистрация: 21.02.2014
Сообщений: 25
10.04.2014, 16:11  [ТС] #3
Не могли бы вы показать?а то я чего-то не понимаю
TenGen
Будущее рядом
97 / 95 / 20
Регистрация: 06.03.2014
Сообщений: 342
10.04.2014, 16:20 #4
Serge666,

C++
1
2
3
4
5
6
7
8
9
10
void func(int *a, int n)
{
*(a+2*n+3) = 5; //это будет обращение к 3 столбцу, 4 ячейке
}
 
void main()
{
int a[5][5];
func(&a[0][0],5);
}
функции передаете ссылку на 1 элемент массива. А поскольку у вас массив статический, то все элементы идут строго друг за другом. *(a+1) будет второй элемент, *(a+n) - первый элемент второго столбца, и тд
zss
Модератор
Эксперт С++
6355 / 5919 / 1919
Регистрация: 18.12.2011
Сообщений: 15,215
Завершенные тесты: 1
10.04.2014, 16:31 #5
Цитата Сообщение от TenGen Посмотреть сообщение
//это будет обращение к 3 столбцу, 4 ячейк
А не наоборот (3-я строка, 4-ый столбец)?
На всякий случай проверил. Меняется именно a[2][3].
TenGen
Будущее рядом
97 / 95 / 20
Регистрация: 06.03.2014
Сообщений: 342
10.04.2014, 16:35 #6
zss, о, прошу прощения, ошибся! Да, получается число, умноженное на n - номер строки
palva
2606 / 1828 / 262
Регистрация: 08.06.2007
Сообщений: 6,986
Записей в блоге: 4
10.04.2014, 16:55 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
#define AMAT(i,j) a[(i)*n+(j)]
void fun(double *a, int n) {
    for(int i=0; i<n; i++) // главная диагональ
        cout << AMAT(i,i);
    cout << endl;
    for(int i=0; i<n; i++) // побочная диагональ
        cout << AMAT(i,n-i);
    cout << endl;
}
double a3[3][3]={1,2,3,2,1,3,3,2,1};
double a4[4][4]={1,2,3,4,2,1,4,3,3,2,1,4,3,2,4,1};
int main() {
    fun(&a3[0][0],3);
    fun(&a4[0][0],4);
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2014, 16:55
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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