Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 08.10.2021
Сообщений: 9

Задание: найти минимальный положительный элемент на побочной диагонали матрицы

08.10.2021, 16:09. Показов 1142. Ответов 5

Студворк — интернет-сервис помощи студентам
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <iostream>
#include <cstdlib>
#include <ctime>
 
#include <cmath> 
#include <string>
#include <clocale>
using namespace std;
 
 
#if _WIN32 || _WIN64
#include <windows.h>
#include <fcntl.h>
#include <io.h>
#endif
 
 
 
void init_locale()
{
#if _WIN32 || _WIN64
    setlocale(LC_ALL, ".1200");
    (void)_setmode(_fileno(stdout), _O_U16TEXT);
    (void)_setmode(_fileno(stdin), _O_U16TEXT);
#else
    locale::global(locale(""));
    wcout.imbue(locale());
    //wcin.imbue( locale() );
#endif
}
 
 
 
int main()
{
    int x;
    int a;
    int min = -20, max = 20;
    //переменная для заполнения матрицы рандомными вещественными числами
    double value;
    //количество знаков после запятой
    int precision = 3;
 
    double sum = 0;
 
 
 
    srand(time(NULL));
    init_locale();
 
    wstring w3 = L"Введите размер квадратной матрицы (целое число от 2 до 10)";
    wcout << w3 << endl;
 
 
    while (!(wcin >> a) || wcin.fail() || (a < 2) || (a > 10) || cin.get() != '\n')
    {
        if (wcin.fail()) {
            wcout << L"Ошибка! Размер матрицы должен быть числом! \n" << endl;
            wcin.clear();
            wcin.ignore(32767, '\n');
 
        }
        else if ((a < 2) || (a > 10)) {
            wcout << L"Ошибка! Размер матрицы должен быть в диапазоне от 2 до 10! \n" << endl;
            wcin.clear();
            wcin.ignore(32767, '\n');
 
        }
        else if (cin.get() != '\n') {
            wcout << L"Ошибка! Размер матрицы должен быть ЦЕЛЫМ числом! \n" << endl;
            wcin.clear();
            wcin.ignore(32767, '\n');
 
        }
        else {
            wcout << L"Ошибка! Что ты ввел?! \n" << endl;
            wcin.clear();
            wcin.ignore(32767, '\n');
        }
    }
 
    //создание квадратной матрицы с вещественными числами
    int i, j;
    double** arr = new double* [a];
    for (int i = 0; i < a; ++i)
        arr[i] = new double[a];
 
    for (i = 0; i < a; ++i)
    {
        for (j = 0; j < a; ++j)
        {
            value = rand() % (int)pow(10, precision);
            arr[i][j] = value = min + (value / pow(10, precision)) * (max - min);
        }
    }
 
    for (i = 0; i < a; ++i)
    {
        for (j = 0; j < a; ++j)
        {
            wcout << arr[i][j] << '\t';
        }
        wcout << endl;
    }
    wcout << endl;
 
    return 0;
 
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.10.2021, 16:09
Ответы с готовыми решениями:

Функция: найти минимальный положительный элемент на побочной диагонали матрицы
Помогите пожалуйста, не могу понять как сделать функцию нахождения минимального положительного элемента в матрице, есть ток это#include...

Найти минимальный элемент побочной диагонали матрицы
ЗАДАНИЕ: Задана целая матрица C . Найти минимальный элемент её побочной диагонали МОЯ ПРОГРАММА: #include &lt;iostream&gt; ...

Найти минимальный и максимальный элемент побочной диагонали матрицы
ЗАДАНИЕ Заполнить матрицу А размера 10*10 случайными числами от -5 до 23. Найти наибольший и наименьший элементы, среди расположенных на...

5
Модератор
 Аватар для long399
2885 / 1840 / 933
Регистрация: 16.10.2013
Сообщений: 5,246
Записей в блоге: 15
08.10.2021, 17:14
Заполнение массива и его вывод можно делать в одном цикле.

C++
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
int mp = -1;
for (i = 0; i < a; ++i)
{
    for (j = 0; j < a; ++j)
    {
        value = rand() % (int)pow(10, precision);
        arr[i][j] = value = min + (value / pow(10, precision)) * (max - min);
        if ((arr[i][j] > 0) && (i == a - j - 1) && (mp == -1 || mp > a[i][j])) {
            mp = a[i][j];
        }
        wcout << arr[i][j] << '\t';
    }
    wcout << endl;
}
 
if (mp == -1) wcout << "на побочной диагонали нет положительных элементов.";
else wcout << mp;
1
0 / 0 / 0
Регистрация: 08.10.2021
Сообщений: 9
08.10.2021, 17:44  [ТС]
Я сделал, но что то не работает.

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath> 
#include <string>
#include <clocale>
using namespace std;
 
 
#if _WIN32 || _WIN64
#include <windows.h>
#include <fcntl.h>
#include <io.h>
#endif
 
 
 
void init_locale()
{
#if _WIN32 || _WIN64
    setlocale(LC_ALL, ".1200");
    (void)_setmode(_fileno(stdout), _O_U16TEXT);
    (void)_setmode(_fileno(stdin), _O_U16TEXT);
#else
    locale::global(locale(""));
    wcout.imbue(locale());
    //wcin.imbue( locale() );
#endif
}
 
 
 
int main()
{
    int x;
    int a;
    int min = -20, max = 20;
    //переменная для заполнения матрицы рандомными вещественными числами
    double value;
    //количество знаков после запятой
    int precision = 3;
 
    double sum = 0;
 
 
 
    srand(time(NULL));
    init_locale();
 
    wstring w3 = L"Введите размер квадратной матрицы (целое число от 2 до 10)";
    wcout << w3 << endl;
 
 
    while (!(wcin >> a) || wcin.fail() || (a < 2) || (a > 10) || cin.get() != '\n')
    {
        if (wcin.fail()) {
            wcout << L"Ошибка! Размер матрицы должен быть числом! \n" << endl;
            wcin.clear();
            wcin.ignore(32767, '\n');
 
        }
        else if ((a < 2) || (a > 10)) {
            wcout << L"Ошибка! Размер матрицы должен быть в диапазоне от 2 до 10! \n" << endl;
            wcin.clear();
            wcin.ignore(32767, '\n');
 
        }
        else if (cin.get() != '\n') {
            wcout << L"Ошибка! Размер матрицы должен быть ЦЕЛЫМ числом! \n" << endl;
            wcin.clear();
            wcin.ignore(32767, '\n');
 
        }
        else {
            wcout << L"Ошибка! Что ты ввел?! \n" << endl;
            wcin.clear();
            wcin.ignore(32767, '\n');
        }
    }
 
    int i, j;
    double** arr = new double* [a];
    int mp = -1;
    for (i = 0; i < a; ++i)
    {
        for (j = 0; j < a; ++j)
        {
            value = rand() % (int)pow(10, precision);
            arr[i][j] = value = min + (value / pow(10, precision)) * (max - min);
            if ((arr[i][j] > 0) && (i == a - j - 1) && (mp == -1 || mp > a[i][j])) {
                mp = a[i][j];
            }
            wcout << arr[i][j] << '\t';
        }
        wcout << endl;
    }
 
    if (mp == -1) wcout << "на побочной диагонали нет положительных элементов.";
    else wcout << mp;
    
    return 0;
}
0
 Аватар для Annemesski
2681 / 1341 / 482
Регистрация: 08.11.2016
Сообщений: 3,707
08.10.2021, 17:58
Kabanchik666, забыли память выделить для массива arr: для строк выделили, а дл столбцов нет
C++
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
    double** arr = new double* [a];
    int mp = -1;
    for (i = 0; i < a; ++i)
    {
        arr[i] = new double[a];
        for (j = 0; j < a; ++j)
        {
            value = rand() % (int)pow(10, precision);
            arr[i][j] = value = min + (value / pow(10, precision)) * (max - min);
            if ((arr[i][j] > 0) && (i == a - j - 1) && (mp == -1 || mp > a[i][j])) {
                mp = a[i][j];
            }
            wcout << arr[i][j] << '\t';
        }
        wcout << endl;
    }
ну и раз выделили, не забывайте освободить
C++
1
2
3
for (int i = 0; i < a; ++i)
    delete[] arr[i];
delete[] arr;
1
0 / 0 / 0
Регистрация: 08.10.2021
Сообщений: 9
08.10.2021, 18:25  [ТС]
в 13, 14 строчке подчеркивает i и выдает ошибку.


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
int i, j;
    double** arr = new double* [a];
    int mp = -1;
    for (int i = 0; i < a; ++i)
        delete[] arr[i];
    delete[] arr;
    {
        arr[i] = new double [a];
        for (j = 0; j < a; ++j)
        {
            value = rand() % (int)pow(10, precision);
            arr[i][j] = value = min + (value / pow(10, precision)) * (max - min);
            if ((arr[i][j] > 0) && (i == a - j - 1) && (mp == -1 || mp > a[i][j])) {
                mp = a[i][j];
            }
            wcout << arr[i][j] << '\t';
        }
        wcout << endl;
    }
 
    if (mp == -1) wcout << "на побочной диагонали нет положительных элементов.";
    else wcout << mp;
    
    return 0;
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
08.10.2021, 18:35
Лучший ответ Сообщение было отмечено Kabanchik666 как решение

Решение

long399, лучше производить поиск во внешнем цикле:
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 <cstdlib>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int n, idx;
    cout << "n="; cin >> n;    
    
      double **a = new double*[n], min_pos_sd=0.; 
    for (int i = 0; i < n; i++)
       a[i] = new double[n];
    
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            a[i][j]=0.1*(rand()%401 - 200);
            cout << setw(7) << a[i][j];
        }
        idx=n-1-i;
        if(a[i][idx]>0. && (min_pos_sd==0 || a[i][idx]<min_pos_sd)) min_pos_sd=a[i][idx];
        
    cout << "\n";
    }
    
    if(min_pos_sd) cout << "\nmin positive on the side diagonal = " << min_pos_sd << "\n";
    else cout << "\nPositive elements on the side diagonal are absent\n";
 
    for (int i = 0; i < n; i++)
    delete[]a[i];
    delete[]a;
system("pause");
return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.10.2021, 18:35
Помогаю со студенческими работами здесь

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

Найти минимальный элемент побочной диагонали заданной квадратной матрицы
Помогите!!! ____________________ Определить минимальный элемент не главным диагонали матрицы целых чисел размером 5 на 5 и номер...

Найти минимальный элемент матрицы, лежащий выше побочной диагонали
Программисты, нужна помощь. Код программа выводит ошибку (expected primary-expression before '=' token). Вот что программа должна делать. ...

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

Найти минимальный положительный элемент кратный 3м под побочной диагональю
Дана матрица 12х12,найти минимальный положительный элемент кратный 3м,под побочной диагональю.Можно изменить размер,т.к. нужно заполнить...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru