С++ отсортировать строку матрицы в которой больше всего отрицательных элементов

Задача полностью сформулирована в заголовке.

Задача как бы разбивается на 2:

  • Найти ту строчку, где больше всего минимальных элементов
  • Отсортировать эту строчку.

Исходный код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <locale>
#include <iostream>
#include <stdlib.h>
#include <time.h>
 
#define N 3
 
using namespace std;
 
void sort(int ar[], int size)
{
int temp;
for(int i = 0; i < size; i++)
for(int j = 0; j < size - i - 1; j++)
if(ar[j] > ar[j + 1])
{
temp = ar[j];
ar[j] = ar[j + 1];
ar[j + 1] = temp;
}
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    int arr [N][N];
    int minusMax = 0, minus = 0, mindex = 0;
    setlocale(LC_ALL, "Russian");
    srand(time(NULL));
// Заполнение массива
 for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            arr[i][j] = rand() % 100  - 50;
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
// Поиск минимальной строки
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            if (arr[i][j] < 0)
            {
                minus++;
            }
        }
        if (minus > minusMax)
        {
            minusMax = minus;
            mindex = i;
        }
        minus = 0;
    }
    cout << "Минимальный индекс = " << mindex << endl;
    // Вызов функции сортировки для определенной строки. N - Длина строки
        sort(arr[mindex],N);
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}
#include <locale>
#include <iostream>
#include <stdlib.h>
#include <time.h>

#define N 3

using namespace std;

void sort(int ar[], int size)
{
int temp;
for(int i = 0; i < size; i++)
for(int j = 0; j < size - i - 1; j++)
if(ar[j] > ar[j + 1])
{
temp = ar[j];
ar[j] = ar[j + 1];
ar[j + 1] = temp;
}
}

int _tmain(int argc, _TCHAR* argv[])
{
	int arr [N][N];
	int minusMax = 0, minus = 0, mindex = 0;
	setlocale(LC_ALL, "Russian");
	srand(time(NULL));
// Заполнение массива
 for (int i = 0; i < N; i++)
	{
		for (int j = 0; j < N; j++)
		{
			arr[i][j] = rand() % 100  - 50;
			cout << arr[i][j] << " ";
		}
		cout << endl;
	}
// Поиск минимальной строки
	for (int i = 0; i < N; i++)
	{
		for (int j = 0; j < N; j++)
		{
			if (arr[i][j] < 0)
			{
				minus++;
			}
		}
		if (minus > minusMax)
		{
			minusMax = minus;
			mindex = i;
		}
		minus = 0;
	}
	cout << "Минимальный индекс = " << mindex << endl;
	// Вызов функции сортировки для определенной строки. N - Длина строки
        sort(arr[mindex],N);
	for (int i = 0; i < N; i++)
	{
		for (int j = 0; j < N; j++)
		{
			cout << arr[i][j] << " ";
		}
		cout << endl;
	}
	return 0;
}

Пример работы программы

Добавить комментарий