Почему не происходит вывод массива

111
17 июня 2019, 21:50

Дана целочисленная квадратная матрица размерностью NxN.

Определить:

  1. произведение элементов в тех строках, которые содержат хотя бы один отрицательный элемент.
  2. минимальное значение на главной диагонали, и если найденное значение отрицательно, заменить нулями строку, в которой это значение расположено.

Проблема: как после всех операций вывести массив?

#include "pch.h"
#include <iostream>
using namespace std;

int main()
{
    setlocale(LC_ALL, "Russian");
    const int size = 4; // размер массива
    int arr[size][size];
    int Index = 1;
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++)
        {
            cout << "arr[" << Index << "]: ";
            cin >> arr[i][j];  // ввод элементов массива
            Index++;
        }
    }
    cout << "Введенный массив:" << endl; // вывод заполненного массива
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++) {
            cout << arr[i][j] << " ";
        }
        cout << '\n';
    }
    for (int i = 0; i < size; i++) {
        int Composition = 1;
        bool OutComposition = false;
        for (int j = 0; j < size; j++)
        {
            if (arr[i][j] < 0) {
                OutComposition = true;
            }
            Composition *= arr[i][j];
        }
        if (OutComposition == true) {
            cout << "Произведение " << i + 1 << " ой строки: " << Composition << endl;
        }
    }
    int IndexRows; // индекс строки с отрицательным элементом
    int min = arr[0][0];
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++) {
            if (i == j && min > arr[i][j]) { // нахождение минимального 
                min = arr[i][j];
                IndexRows = j; // получения индекса строки с минимальным отрицательным
            }
        }
    }
    // замена 
    if (min < 0) {
        for (IndexRows; IndexRows < size; IndexRows)
        {
            for (int j = 0; j < size; j++) {
                arr[IndexRows][j] = 0;
            }
        }
    }
        cout << "Полученный массив:" << endl; // вывод результата 
        for (int i = 0; i < size; i++)
        {
            for (int j = 0; j < size; j++) {
                cout << arr[i][j] << " ";
            }
            cout << '\n';
        }

        return 0;
}
Answer 1
    // замена
if (min < 0) {
        for (int j = 0; j < size; j++) {
            arr[IndexRows][j] = 0;
        }
}

Примерно вот так должен выглядить блок с заменой в строке по 2 пункту задания. Цикл с IndexRows бесконечный и вообще не имеет смысла, т.к. если и добавить инкриментацию IndexRows, то заменятся все значения строках до последней, начиная со строки в которй заменить следует.

READ ALSO
С++ Как запустить программу?

С++ Как запустить программу?

Написать программу обработки файла, содержащего информацию о рейтинге студентовКаждая запись должна содержать Ф

118
Отправка данных на сервер | Android, Java

Отправка данных на сервер | Android, Java

Необходимо реализовать отправку данных на http серверКак это можно реализовать на java, в android приложении?

109
OpenJFX 11 + Eclipse

OpenJFX 11 + Eclipse

Доброго времени суток!

127
Как отправить сообщение в группу VK api?

Как отправить сообщение в группу VK api?

пытаюсь отправить сообщение в группу через Api Vk Android , но сообщение не отправляется, авторизация есть, стена у группы открыта

171