Замена в массиве

225
01 марта 2018, 13:08

Здравствуйте. Прошу помочь со следующей проблемой.

Задание: Найти строку с наибольшим элементом и поменять её местами с последней строкой.

Вроде всё сделал, но после замены в одной из строк происходит хаос с числами.

#include <iostream>
#include <math.h>
#include <conio.h>
#define N 9
#define A 5
using namespace std;
int main()
{
    setlocale(0, ".1251");
    int mass[N][A], i,j, min, ryad, stolb;
    double total = 0;
    for (i = 0; i < N; i++) 
    {
        for (j = 0; j < A; j++)
        {
            mass[i][j] = rand() % 20;
        }
    }
    cout << "Массив из случайных чисел:\n";
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < A; j++)
        {
            cout.width(6);
            cout << mass[i][j] << " ";
        }
        cout << "\n";
    }
    for (min = mass[0][0], i = 0; i < N; i++)
        for (j = 0; j < A; j++)
            if (mass[i][j] < min) min = mass[i][j];
    cout << "Минимальный элемент: " << min << "\n";
    for (i = 0; i < N; i++)
        for (j = 0; j < A; j++)
            if (mass[i][j] == min)
            {
                ryad = i;
                stolb = j;
            }
    cout << "Позиция минимального элемента: " << ryad+1 << "x" << stolb +1 << "\n";
    for (i = 0; i < N; i++)
    {
        int q = mass[ryad][i];
        mass[ryad][i] = mass[N - 1][i];
        mass[N - 1][i] = q;
    }
    cout << "Массив с замененной строкой:\n";
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < A; j++)
        {
            cout.width(6);
            cout << mass[i][j] << " ";
        }
        cout << "\n";
    }
    system("pause");
    return 0;
}
Answer 1

Цикл замены строчек использует переменную N для итерации, но она отвечает за кол-во рядов, когда вам необходимо количество столбцов, поскольку нужно перенести именно столбцовые элементы. Следует заменить это число N на A - кол-во столбцов. Код:

for (i = 0; i < A; i++)
{
    int q = mass[ryad][i];
    mass[ryad][i] = mass[N - 1][i];
    mass[N - 1][i] = q;
}

А случайные числа возникают из-за обращения в неизвестное пространство памяти.

READ ALSO
Многопоточность в C++

Многопоточность в C++

Кто в курсе многопоточности в C++? Решил поизучать многопоточность в C++ и заступорилсяНачал читать книгу Энтони Уильямса "Параллельное программирование...

226
java bitmap Ошибка

java bitmap Ошибка

Ошибка:

193
Как загрузить в servlet и jsp изображение/я?

Как загрузить в servlet и jsp изображение/я?

Есть приложение, которое должно отображать разные изображения в jsp в зависимости от атрибута в сессииКак нужно составить jsp и сам servlet, чтобы...

174
Конкатенация в setText() - Anroid Studio не нравится

Конкатенация в setText() - Anroid Studio не нравится

В качестве упражнения делаю простое приложение по заказу пиццы - выбор размера (влияет на цену) плюс дополнительный топпинг (тоже влияет на цену)

189