Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2012, 19:24   #1
miftayka
Пользователь
 
Регистрация: 09.05.2010
Сообщений: 17
Сообщение Матрица как параметр

Не могу разобраться с передачей многомерных массивов в качестве параметра функции. Объясните пожалуйста на примере:
Код:
#include <iostream>
#include <fstream>
#include <ctime>

using namespace std;

int evenRowsSum(int ar[][], int size)
{
	int sum=0;
	// так как нумерация строк начинается с 0, а не 1,
	// перебираем нечетные индексы строк
	for (int i=1;i<size;i+=2) 
		for (int j=0; j<size;j++)
			sum+=ar[i][j];
	return sum;
}

void main()
{
	const int N=10, M=5;
	ifstream myin("input.txt");
	int A[N][N], B[M][M];
	
	// считывание массива А
	for (int i=0;i<N;i++)
		for (int j=0;j<N;j++)
			myin>>A[i][j];
	// считывание массива В
	for (int i=0;i<M;i++)
		for (int j=0;j<M;j++)
			myin>>B[i][j];
	
	int YA, YB;
	YA=evenRowsSum(A,N);
	YB=evenRowsSum(B,M);

	if (YB=0) 
		cout<<"Ошибка! Сумма элементов в четных строках матрицы B равна 0.";
	else
	{
		double K=YA/YB;
		cout<<"K = "<<K;
	}

	system("pause");
}
выдает ошибки:
Цитата:
Ошибка 1 error C2087: ar: отсутствует индекс
Ошибка 2 error C2664: evenRowsSum: невозможно преобразовать параметр 1 из "int [10][10]" в "int [][1]"
Ошибка 3 error C2664: evenRowsSum: невозможно преобразовать параметр 1 из "int [5][5]" в "int [][1]"
Ошибка 4 IntelliSense: массив не может содержать элементы этого типа
miftayka вне форума Ответить с цитированием
Старый 09.04.2012, 20:01   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
int ar[][]
Может так: int **ar ?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.04.2012, 20:19   #3
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Можно еще веселей:
Код:
template <int size> int evenRowsSum(int ar[][size])
{
	int sum=0;
	// так как нумерация строк начинается с 0, а не 1,
	// перебираем нечетные индексы строк
	for (int i=1;i<size;i+=2) 
		for (int j=0; j<size;j++)
			sum+=ar[i][j];
	return sum;
}


//... И вызывать вот так
int YA, YB;
YA=evenRowsSum<N>(A);
YB=evenRowsSum<M>(B);
И еще:
У вас if (YB=0)
а надо бы if (YB==0)
EUGY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структура как параметр объединения Axrik Общие вопросы C/C++ 2 11.03.2012 17:32
Как передать параметр в поток? Pack Общие вопросы Delphi 3 22.02.2012 12:09
метод как параметр процедуры Roof Общие вопросы Delphi 11 29.10.2010 23:34
как сделать параметр ГОСЕАН БД в Delphi 6 20.04.2009 07:24
Как передать параметр? Иллидан Общие вопросы Delphi 8 12.07.2008 12:57