Страница 1 из 1

Обработка числового массива

Добавлено: 26 ноя 2014, 21:52
Zull
Обменять значениями строку с наибольшим числом положительных элементов со столбцом с наибольшим числом отрицательных элементов.

Код: Выделить всё

#include "Header.h"	
const int n = 3, m = 3;
int main()
{
	int a[n][m];
	//Ввод элементов
	int i = 0;
	int j = 0;
	while (i < n) 
	{
		cout << "Enter 3 element of row" << (i + 1) << " -> "; 
		j = 0;
		do
		{ 
			cin >> a[i][j]; 
			j++; 
		} 
		while (j < m); 
		
		i++;
	}
    cout << endl;
	//Вывод элементов
	for (int i = 0; i<n; i++)
	{
		for (int j = 0; j<m; j++)
			cout << a[i][j] <<'\t';
		cout << endl;
	}
	cout <<" -------- \n";
	int index =0;               //номер столбца с максимальным кол-вом отр. эл-тов
	int max=0;                  //максимальное кол-во отр. элементов в столбце
	int count = 0;              //счетчик отр. элементов текущей строки
	for (int j = 0; j < m ; j++)
	{
		//обнуление счетчика отр. эл-тов текущего столбца
		count = 0;
		//увеличение счетчика если эл-нт столбца имеет отр. значение
		for (int i = 0; i < n; i++)
		{
			if (a[i][j] < 0)
			{
				count++; 
				cout << a[i][j] << '\t';
			}
		}
		    if (count>max)
		{
		  max=count;
		  index=j;
		}	
	}
     std::cout << "index = " << index << std::endl;

    int ind =0;               //номер строки с максимальным кол-вом положительных эл-тов
	int maximym=0;                  //максимальное кол-во положительных элементов в столбце
	int counti = 0;              //счетчик положительных элементов текущей строки
	for (int i = 0; i < n; i++)
	{
		//обнуление счетчика положительных эл-тов текущей строки
		counti = 0;
		//увеличение счетчика если эл-нт строки имеет положительное значение
		for (int j = 0; j < m ; j++)
		{
			if (a[i][j] > 0)
			{
				counti++; 
				cout << a[i][j] << '\t';
			}
		}
		    if (counti>maximym)
		{
		  maximym=counti;
		  ind=i;
		}	
	}
     std::cout << "ind = " << ind << std::endl;

	return 0;
}

Re: Обработка числового массива

Добавлено: 01 дек 2014, 12:16
Romeo
Просто решил поделиться? Или вопрос по коду есть какой-то?

Re: Обработка числового массива

Добавлено: 01 дек 2014, 12:55
Zull
Как поменять эти значения и вывести их в массиве? У меня найдены только индексы, а дальше ступор.

Re: Обработка числового массива

Добавлено: 01 дек 2014, 14:59
Romeo
В цикле для i от 0 до N-1 поменять местами a[index] с a[ind] через временную переменную?

Re: Обработка числового массива

Добавлено: 01 дек 2014, 15:24
Zull
Да, как это написать?

Re: Обработка числового массива

Добавлено: 01 дек 2014, 16:30
Romeo
Я уж не знаю как подробонее написать. Что именно не понятно? Как цикл писать? Или как менять местами значения через временную переменную? Если последнее, то вот так:

Код: Выделить всё

int a, b;
...

int temp = a;
a = b;
b = temp;

...

Re: Обработка числового массива

Добавлено: 01 дек 2014, 19:19
Zull
Спасибо, теперь все получилось!:-D