Member 13515839 Ответов: 1

Как найти сумму элементов в нечетных и четных строках


Это моя задача:
Дана целочисленная матрица размера N. найдите множество наименьших элементов ее нечетных строк и больших элементов ее четных строк.
Я действительно не знаю, что я делаю не так.

Что я уже пробовал:

#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int size;
int min(int *array[][50])
{
	int i,j,min_e=0;
	for (i = 1; i < size; i++)
	{
		for (j = 1; j < size; j++)
		{
			if (array[i][j] < array[min_e])//operand types are incompatible ("int *" and "int **")
			{
				min_e = i;
			}
			return min_e;
		}
	}
}
int x(int array[][50])
{
	int i, j,sum_e=0;
	for (i = 0; i < size; i++)
	{
		for (j = 0; j < size; j++)
		{
			if (i % 2 == 0)
			{
				sum_e += min(array);//argument of type "int (*)[50]" is incompatible with parameter of type "int *(*)[50]
			}
			return sum_e;
		}
	}
	return 0;
}
int max(int array[][50])
{
	int i, j, max_e = 0;
	for (i = 1; i < size; i++)
	{
		for (j = 1; j < size; j++)
		{
		 if (array[i][j] > array[max_e])//operand types are incompatible ("int *" and "int **")			
 
		max_e = i;
		}
		return max_e;
	}
}
int y( int array[50][50])
{
	int i, j, sum_o = 0, o = 0;
	for (i = 0; i < size; i++)
	{
		for (j = 0; j < size; j++)
		{
			if (array[i][j] % 2 == 1)
			{
				sum_o += max(array);//argument of type "int (*)[50]" is incompatible with parameter of type "int *(*)[50]	

			}
		}
		return sum_o;
	}
	return 0;
}
int main()
{
	int array[50][50], i, j;
	printf("\n Size of array: ");
	scanf_s("\n %d", &size);
	for (i = 0; i < size; i++)
	{
		for (j = 0; j < size; j++)
		{
			printf("\n array[%d][%d]: ",i,j);
			scanf_s("\n %d", array[i][j]);
		}
	}
	printf("\n Sum of even-numbered elements \n: ", x(array));
	printf("\n Sum of odd-numbered elements \n: ", y(array));
	_getch();
	return 0;
}

1 Ответов

Рейтинг:
5

KarstenK

Это очень простая задача, поэтому я дам вам только несколько советов:

используйте более четкие имена var и функций, нет икс()
используйте debug output (printf) в критических путях кода, таких как вызов функции и оператор if
(удалите oe комментарий, когда он больше не нужен)
напишите несколько тестовых данных с помощью простого массива, чтобы вы могли отлаживать свой код

одна ошибка заключается в том, что ваш max_e ошибочен. Вы присваиваете индекс, а не значение.

if (array[i][j] > max_e ) {
printf("new max found: %d", array[i][j] );
max_e = array[i][j];//adding one
}
должно быть правильным.

Вы также должны следить за тем, чтобы размер не мог быть больше 50.