Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 18.10.2019
Сообщений: 51
1

Заменить нулями отрицательные элементы матрицы, лежащие выше главной диагонали

15.11.2019, 12:08. Просмотров 608. Ответов 10
Метки нет (Все метки)

Дана квадратная матрица порядка M. Заменить нулями
отрицательные элементы матрицы, лежащие выше главной
диагонали. Решить задачу:
– с использованием статического массива;
– с использованием одномерного динамического массива;
– с использованием двумерного динамического массива.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2019, 12:08
Ответы с готовыми решениями:

Заменить нулями отрицательные элементы матрицы, лежащие выше главной диагонали
Дана квадратная матрица порядка M. Заменить нулями отрицательные элементы матрицы, лежащие выше...

Заменить нулями элементы матрицы, лежащие одновременно выше главной и обратной диагоналей
Дана квадратная матрица порядка n. Заменить нулями элементы, лежащие одновременно выше главной и...

Матрицы. Отрицательные элементы матрицы, расположенные выше главной диагонали, заменить на квадраты их значений
Отрицательные элементы матрицы (n=6; m=6), расположенные выше главной диагонали, заменить на...

Обнулить элементы матрицы, лежащие одновременно выше главной диагонали и выше побочной диаго-нали.
Matrix92. Дана квадратная матрица порядка M. Обнулить элементы матрицы, лежащие одновременно выше...

10
15 / 10 / 6
Регистрация: 08.11.2019
Сообщений: 40
15.11.2019, 13:21 2
можно и без использования массива
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
//с использованием двумерного динамического массива
#include <iostream>
#include <iomanip>
#include <ctime>
#define M 5
using namespace std;
int arr[M][M];
void print()
{
    for (int i = 0; i < M; i++)
    {
        for (int j = 0; j < M; j++)
            cout << setw(3) << arr[i][j] << ' ';
        cout << endl << endl;
    }
}
int main()
{
    srand(time(0));
    for (int i = 0; i < M; i++)
        for (int j = 0; j < M; j++)
            arr[i][j] = rand() % 19 - 9;
    print();
    cout << endl;
    for (int i = 0; i < M; i++)
        for (int j = 0; j < M; j++)
            if (i < j && arr[i][j] < 0)
                arr[i][j] = 0;
    print();
}
0
0 / 0 / 0
Регистрация: 18.10.2019
Сообщений: 51
15.11.2019, 14:24  [ТС] 3
А как с одномерным сделать?

Добавлено через 24 минуты
И это не динамический массив.
0
15 / 10 / 6
Регистрация: 08.11.2019
Сообщений: 40
15.11.2019, 14:52 4
Цитата Сообщение от Translater757 Посмотреть сообщение
И это не динамический массив.
Ага, не успел исправить комментарий.
Для динамического нужно выделять память c помощью оператора new и освобождать ее оператором delete.
Цитата Сообщение от Translater757 Посмотреть сообщение
А как с одномерным сделать?
Через один цикл. Попробуй. Если что-то не получится, тогда помогу.
0
0 / 0 / 0
Регистрация: 18.10.2019
Сообщений: 51
15.11.2019, 14:54  [ТС] 5
Можешь сделать код с динамическим, я статический понял как делать, а вот динамический нет, не получается просто.
0
15 / 10 / 6
Регистрация: 08.11.2019
Сообщений: 40
15.11.2019, 15:17 6
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
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
void print(int** arr, int M)
{
    for (int i = 0; i < M; i++)
    {
        for (int j = 0; j < M; j++)
            cout << setw(3) << arr[i][j] << ' ';
        cout << endl << endl;
    }
}
int main()
{
    srand(time(NULL));
    int M;
    cin >> M;
    int** arr = new int* [M];
    for (int i = 0; i < M; i++)
        arr[i] = new int[M];
    for (int i = 0; i < M; i++)
        for (int j = 0; j < M; j++)
            arr[i][j] = rand() % 19 - 9;
    print(arr, M);
    cout << endl;
    for (int i = 0; i < M; i++)
        for (int j = 0; j < M; j++)
            if (i < j && arr[i][j] < 0)
                arr[i][j] = 0;
    print(arr, M);
    for (int i = 0; i < M; i++)
        delete[] arr[i];
}
0
0 / 0 / 0
Регистрация: 18.10.2019
Сообщений: 51
15.11.2019, 16:06  [ТС] 7
Спасибо, сейчас попробую сам, одномерный написать.

Добавлено через 39 минут
А можно без void это написать, я просто этого не проходил.?
0
15 / 10 / 6
Регистрация: 08.11.2019
Сообщений: 40
15.11.2019, 16:20 8
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
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
int print(int** arr, int M)
{
    for (int i = 0; i < M; i++)
    {
        for (int j = 0; j < M; j++)
            cout << setw(3) << arr[i][j] << ' ';
        cout << endl << endl;
    }
    cout << endl;
    return 0;
}
int main()
{
    srand(time(NULL));
    int M;
    cin >> M;
    int** arr = new int* [M];
    for (int i = 0; i < M; i++)
    {
        arr[i] = new int[M];
        for (int j = 0; j < M; j++)
            arr[i][j] = rand() % 19 - 9;
    }
    print(arr, M);
    for (int i = 0; i < M; i++)
        for (int j = 0; j < M; j++)
            if (i < j && arr[i][j] < 0)
                arr[i][j] = 0;
    print(arr, M);
    for (int i = 0; i < M; i++)
        delete[] arr[i];
    delete[] arr;
    return 0;
}
0
0 / 0 / 0
Регистрация: 18.10.2019
Сообщений: 51
15.11.2019, 16:30  [ТС] 9
Спасибо

Добавлено через 8 минут
А в статическом массиве только же строки должны выводится? У меня что-то не так.
Можешь без void написвть со статическим?
0
15 / 10 / 6
Регистрация: 08.11.2019
Сообщений: 40
15.11.2019, 16:48 10
1. Заменить void на int
Цитата Сообщение от Cool boy Посмотреть сообщение
int print(int** arr, int M)
2. В конце метода добавить return
Цитата Сообщение от Cool boy Посмотреть сообщение
return 0;
3. Заменить
Цитата Сообщение от Cool boy Посмотреть сообщение
srand(time(NULL));
на srand((int)time(NULL));
0
0 / 0 / 0
Регистрация: 18.10.2019
Сообщений: 51
15.11.2019, 17:23  [ТС] 11
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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <ctime>
#define M 3
using namespace std;
int arr[M][M];
int print()
{
    for (int i = 0; i < M; i++)
    {
        for (int j = 0; j < M; j++)
            cout << setw(3) << arr[i][j] << ' ';
        cout << endl << endl;
    }
}
int main()
{
    srand((int)time(0));
    for (int i = 0; i < M; i++)
        for (int j = 0; j < M; j++)
            arr[i][j] = rand() % 19 - 9;
    print();
    cout << endl;
    for (int i = 0; i < M; i++)
        for (int j = 0; j < M; j++)
            if (i < j && arr[i][j] < 0)
                arr[i][j] = 0;
    print();
    system("pause");
    return 0;
}
Пишет ошибку :Ошибка 1 error C4716: print: должна возвращать значение

Добавлено через 24 минуты
Всё я короче сделал статический, так что остался ток одномерный.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2019, 17:23

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

Обнулить элементы матрицы, лежащие одновременно выше главной диагонали и ниже побочной диагонали
Дана квадратная матрица порядка M. Обнулить элементы матрицы, лежащие одновременно выше главной...

Массивы:многомерный и одномерный (заменить нулями все отрицательные числа выше главной диагонали)
Вот массив номер 1 (многомерный) тут задача была заменить нулями все отрицательные числа выше...

Обнулить все элементы, лежащие выше главной диагонали матрицы
Задача:Если Целочисленная квадратная матрица симметрична относительно главной диагонали - обнулить...

Заменить нулями элементы матрицы, лежащие ниже побочной диагонали
Помогите, пожалуйста написать код. Дана квадратная матрица порядка M. Заменить нулями элементы...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.