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

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

Восстановить пароль Регистрация
 
Serge666
0 / 0 / 0
Регистрация: 21.02.2014
Сообщений: 25
10.04.2014, 12:42     Передача в функцию двумерного массива #1
Вводится две квадратные матрицы разного размера, посчитать сумму модулей отрицательных элементов каждой матрицы, и среднее значение 2-х сумм модулей отрицательных чисел.
(с помощью функции)

Помогите, нужно через одну функцию, но т.к они разного размера,у меня через одну не получается, можно ли вообще это сделать? если можно, то как, покажите пожалуйста.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
palva
 Аватар для palva
2373 / 1595 / 190
Регистрация: 08.06.2007
Сообщений: 6,364
Записей в блоге: 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
Будущее рядом
 Аватар для TenGen
96 / 94 / 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
Модератор
Эксперт С++
 Аватар для zss
5955 / 5560 / 1788
Регистрация: 18.12.2011
Сообщений: 14,209
Завершенные тесты: 1
10.04.2014, 16:31     Передача в функцию двумерного массива #5
Цитата Сообщение от TenGen Посмотреть сообщение
//это будет обращение к 3 столбцу, 4 ячейк
А не наоборот (3-я строка, 4-ый столбец)?
На всякий случай проверил. Меняется именно a[2][3].
TenGen
Будущее рядом
 Аватар для TenGen
96 / 94 / 20
Регистрация: 06.03.2014
Сообщений: 342
10.04.2014, 16:35     Передача в функцию двумерного массива #6
zss, о, прошу прощения, ошибся! Да, получается число, умноженное на n - номер строки
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2014, 16:55     Передача в функцию двумерного массива
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
palva
 Аватар для palva
2373 / 1595 / 190
Регистрация: 08.06.2007
Сообщений: 6,364
Записей в блоге: 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;
}
Yandex
Объявления
10.04.2014, 16:55     Передача в функцию двумерного массива
Ответ Создать тему
Опции темы

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