Форум программистов, компьютерный форум CyberForum.ru

В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки - C++

Восстановить пароль Регистрация
 
Мико
0 / 0 / 0
Регистрация: 25.09.2014
Сообщений: 41
22.12.2014, 14:03     В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки #1
Матрица 5х5. Заменить все отрицательные элементы ниже главной диагонали на минимальный элемент соответствующей строки и отобразить этот массив по столбцам в обратном порядке. Помогите!!! Я знаю, как найти отрицательные элементы, как заменить элементы ниже диагонали, найти минимальный элемент вообще. Но как найти мин элемент каждой строки и как вообще все собрать. А насчет отображения я вообще в ужасе!!!
Это срочно!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2014, 14:03     В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки
Посмотрите здесь:

C++ Заменить на главной диагонали все отрицательные элементы их абсолютными значениями
C++ Дана матрица A(3,3). Заменить на главной диагонали все отрицательные элементы их абсолютными значениями.
Заменить отрицательные элементы, расположенные ниже главной диагонали, на 0 C++
C++ Динамически распределение памяти. Матрицы. Найти максимальный ниже побочной диагонали, и минимальный главной диагонали
C++ Элементы матрицы, которые лежат ниже главной диагонали, заменить минимальным элементом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,538
Записей в блоге: 27
22.12.2014, 14:05     В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки #2
Мико,
Но как найти мин элемент каждой строки и как вообще все собрать
В чем проблема? Построчно. Строка - это простой одномерный массив. Вот и находите минимум в одномерном массиве. Далее со следующей строкой.
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1856 / 1652 / 576
Регистрация: 14.05.2014
Сообщений: 4,740
Записей в блоге: 1
Завершенные тесты: 5
22.12.2014, 14:23     В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки #3
Мико, если я все правильно понял, то как-то так
C++
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main()
{
    setlocale(LC_ALL, "Russian");
    double matrix[5][5];
    srand(time(NULL));
    // заполняем матрицу случайными значениями от -5 до 5 
    for (int i = 0; i < 5; ++i)
        for (int j = 0; j < 5; ++j)
            matrix[i][j] = rand() % 11 - 5;
    // выводим матрицу на экран
    for (int i = 0; i < 5; ++i)
    {
        for (int j = 0; j < 5; ++j)
        {
            std::cout.width(3);
            std::cout << matrix[i][j];
        }
        std::cout << std::endl;
    }
    std::cout << std::endl;
    // т.к. строка с индексом 0 находится
    // на главной диагонали, то ее не трогаем
    for (int i = 1; i < 5; ++i)
    {
        int min = matrix[i][0];
        // находим минимальный элемент строки
        for (int j = 0; j < 5; ++j)
            if (matrix[i][j] < min) min = matrix[i][j];
        // заменяем отрицательные на минимальный
        for (int j = 0; j < i; ++j)
            if (matrix[i][j] < 0) matrix[i][j] = min;
    }
    // выводим матрцу
    for (int i = 0; i < 5; ++i)
    {
        for (int j = 4; j >= 0; --j)
        {
            std::cout.width(3);
            std::cout << matrix[i][j];
        }
        std::cout << std::endl;
    }
    
    system("pause");
    return 0;
}
Den41LxD
18 / 18 / 10
Регистрация: 11.12.2014
Сообщений: 52
22.12.2014, 14:32     В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки #4
есть такой вариант :
C++
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
#include <iostream>
using namespace std;
int main()
{
    int const n=5;
    int mas[n][n];
    int arr[n];
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            mas[i][j]=rand()%100-50;
        }
    }
    int min=mas[0][0];
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            cout << mas[i][j] << "\t";
            if(mas[i][j]<min)
            {
                min=mas[i][j];
            }
        }
        arr[i]=min;
        cout << " min = " << min << endl;
        min=mas[i+1][0];
    }
    cout << "zamena \n";
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<i;j++)
        {
            if(mas[i][j]<0)
            {
                mas[i][j]=arr[i];
            }
        }
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            cout << mas[i][j] << "\t";
        }
        cout << endl;
    }
    cout << "vivod\n";
    for(int i=n-1;i>=0;i--)
    {
        for(int j=0;j<n;j++)
        {
            cout << mas[i][j] << "\t";
        }
        cout << endl;
    }
    system("pause");
}
Мико
0 / 0 / 0
Регистрация: 25.09.2014
Сообщений: 41
22.12.2014, 14:43  [ТС]     В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки #5
Все работает, спасибо
только объясните, пожалуйста (и простите за наглость), что есть такое cout.width(3)?

Добавлено через 3 минуты
Den41LxD, и вам спасибо)))
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1856 / 1652 / 576
Регистрация: 14.05.2014
Сообщений: 4,740
Записей в блоге: 1
Завершенные тесты: 5
22.12.2014, 14:43     В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки #6
Цитата Сообщение от Den41LxD Посмотреть сообщение
C++
1
for(int i=n-1;i>=0;i--)
я вот, честно, в толк не возьму: вывести по столбцам в обратном порядке - это как? Обратный порядок должен быть у столбцов или у элементов столбцов, то бишь у строк?
Den41LxD
18 / 18 / 10
Регистрация: 11.12.2014
Сообщений: 52
22.12.2014, 14:46     В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки #7
Ну как я понял,это обратный порядок у элементов столбцов,хотя,может быть,и обратный порядок строки
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1856 / 1652 / 576
Регистрация: 14.05.2014
Сообщений: 4,740
Записей в блоге: 1
Завершенные тесты: 5
22.12.2014, 14:50     В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки #8
Цитата Сообщение от Мико Посмотреть сообщение
что есть такое cout.width(3)
это размер поля вывода в символах, т.е. 3 символа. Т.к. я заполнял массив цифрами, а не числами, то отвел в выводе один символ под цифру, один символ под знак минус, если таковой имеется, и еще один остался пустым для разделения столбцов. Просто не хотелось писать что-то типа
C++
1
std::cout << matrix[i][j] << ' ';
или
C++
1
std::cout << matrix[i][j] << '\t';
Добавлено через 3 минуты
Мико, может Вы сможете мне и Den41LxD разъяснить эту дилемму
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Обратный порядок должен быть у столбцов или у элементов столбцов, то бишь у строк?
Мико
0 / 0 / 0
Регистрация: 25.09.2014
Сообщений: 41
22.12.2014, 14:53  [ТС]     В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки #9
В задании сказано: "отобразить массив на экране по столбцам в обратном порядке". Зис ол
Den41LxD
18 / 18 / 10
Регистрация: 11.12.2014
Сообщений: 52
22.12.2014, 14:56     В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки #10
Наверно,все таки,обратный порядок у строки должен быть
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1856 / 1652 / 576
Регистрация: 14.05.2014
Сообщений: 4,740
Записей в блоге: 1
Завершенные тесты: 5
22.12.2014, 15:03     В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки #11
Мико, в таком случае имейте в виду оба варианта
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2014, 15:06     В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки
Еще ссылки по теме:

C++ В двумерном массиве вывести все элементы выше главной диагонали и ниже побочной
C++ Вычислить среднее арифметическое побочной диагонали матрицы, и заменить им элементы ниже главной диагонали
Найти минимальный элемент матрицы, расположенный ниже главной диагонали C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Мико
0 / 0 / 0
Регистрация: 25.09.2014
Сообщений: 41
22.12.2014, 15:06  [ТС]     В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки #12
Зачёт. Спасибо, я вас люблю)))
Yandex
Объявления
22.12.2014, 15:06     В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки
Ответ Создать тему
Опции темы

Текущее время: 13:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru