Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

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

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

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

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

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

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

6
palva
2655 / 1882 / 275
Регистрация: 08.06.2007
Сообщений: 7,220
Записей в блоге: 4
10.04.2014, 13:23 #2
В функции рассматривать матрицу как одномерный массив, передавать в функцию дополнительный параметр n = размер матрицы. Внутри функции при работе с индексами i j вычислять индекс одномерного массива, то есть вместо [i][j] писать [i*n+j]. При обращении к функции в качестве матрицы передавать адрес первого элемента матрицы.
0
Serge666
0 / 0 / 0
Регистрация: 21.02.2014
Сообщений: 25
10.04.2014, 16:11  [ТС] #3
Не могли бы вы показать?а то я чего-то не понимаю
0
TenGen
Будущее рядом
98 / 96 / 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) - первый элемент второго столбца, и тд
0
zss
Модератор
Эксперт С++
6536 / 6098 / 2008
Регистрация: 18.12.2011
Сообщений: 15,863
Завершенные тесты: 1
10.04.2014, 16:31 #5
Цитата Сообщение от TenGen Посмотреть сообщение
//это будет обращение к 3 столбцу, 4 ячейк
А не наоборот (3-я строка, 4-ый столбец)?
На всякий случай проверил. Меняется именно a[2][3].
1
TenGen
Будущее рядом
98 / 96 / 20
Регистрация: 06.03.2014
Сообщений: 342
10.04.2014, 16:35 #6
zss, о, прошу прощения, ошибся! Да, получается число, умноженное на n - номер строки
0
palva
2655 / 1882 / 275
Регистрация: 08.06.2007
Сообщений: 7,220
Записей в блоге: 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;
}
0
10.04.2014, 16:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2014, 16:55
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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