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

Определить количество отрицательных элементов выше и ниже диагонали

26.03.2012, 19:30. Показов 4246. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана квадратная вещественная матрица.
Определить отдельно количество k1 отрицательных элементов, расположенных выше главной диагонали, и количество k2 отрицательных элементов, расположенных ниже этой диагонали.
- Этот пункт уже сделан (см. скриншот), как сделать следующий?
Если k1!=k2, то изменить знаки определенного количества отрицательных элементов таким образом, чтобы выполнялось равенство k1=k2 .

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
#include <iostream>
#include <ctime>
#include <cstdlib>
 
using namespace std;
 
int main ()
{       setlocale(LC_ALL, "");
        srand(time(NULL));
 
        int n, m, i, j;
        double **matr = NULL;
 
        cout << "Введите количество строк n = ";
        cin >> n;
        cout << "Введите количество столбцов m = ";
        cin >> m;
        cout << "\nматрица размером " << n << "x" << m <<"\n\n";
        //Выделяем память под матрицу 
    // Выделяем память под массив строк матрицы 
        matr = new double* [n];
        for (i = 0; i < n; ++i)
        {
                matr[i] = new double [m];
                for (j = 0; j < m; ++j)
                {
                        // Выделяем память под каждую строку матрицы 
                        matr[i][j] = (double) (rand()%100-50)/100;
                        cout << matr[i][j] << "\t";
                }
                cout <<"\n" ;
    }
//количество k1 отрицательных элементов, расположенных ВЫШЕ главной диагонали
        int k1=0;
        for (i=0; i<n; ++i)
        {
            for(j=0; j<m; ++j)
                if (matr[i][j]<0 && i<j) k1=k1+1;
        }
cout<<"\nКоличество k1 отрицательных элементов, расположенных выше главной диагонали - "<<k1<<endl;
//количество k2 отрицательных элементов, расположенных НИЖЕ главной диагонали
        int k2=0;
        for (i=0; i<n; ++i)
        {
            for(j=0; j<m; ++j)
                if (matr[i][j]<0 && i>j) k2=k2+1;
        }
cout<<"\nКоличество k2 отрицательных элементов, расположенных ниже главной диагонали - "<<k2<<endl;
        // Удаление матрицы из памяти
        // Удаление каждой строки матрицы 
        for (int i = 0; i <n ; ++i)
                delete[] matr [i];
        // Удаление массива строк матрицы 
        delete[] matr;
        return 0;
}
Просьба помочь, очень долго мучился над 1-й половиной задания, хотелось бы и 2-ю часть сделать!
Миниатюры
Определить количество отрицательных элементов выше и ниже диагонали  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.03.2012, 19:30
Ответы с готовыми решениями:

Определить количество отрицательных элементов расположенных выше главной диагонали
Определить количество отрицательных элементов расположенных выше главной диагонали

Определить количество отрицательных элементов, расположенных выше главной диагонали матрицы
Доброго времени суток, помогите пожалуйста с заданием. Желательно максимально просто Задание 2. Инициализировать при объявлении...

Определить количество отрицательных элементов, расположенных выше главной диагонали матрицы
Ребят, помогите!!! Необходимо определить количество отрицательных элементов, расположенных выше главной диагонали матрицы мxn. Кое что я...

7
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
26.03.2012, 20:16
Как тебе такое решение?

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
#include <iostream>
#include <ctime>
#include <cstdlib>
 
using namespace std;
 
int main ()
{       
        setlocale(LC_ALL, "");
        srand(time(NULL));
 
        int n, m, i, j, bu, bd;
        double **matr = NULL;
        double **buf_up;
        double **buf_down;
        cout << "Введите количество строк n = ";
        cin >> n;
        cout << "Введите количество столбцов m = ";
        cin >> m;
        cout << "\nматрица размером " << n << "x" << m <<"\n\n";
        //Выделяем память под матрицу 
    // Выделяем память под массив строк матрицы 
        matr = new double* [n];
        buf_up=new double* [n*m/2];
        buf_down=new double* [n*m/2];
        for (i = 0; i < n; ++i)
        {
                matr[i] = new double [m];
                for (j = 0; j < m; ++j)
                {
                        // Выделяем память под каждую строку матрицы 
                        matr[i][j] = (double) (rand()%100-50)/100;
                        cout << matr[i][j] << "\t";
                }
                cout <<"\n" ;
    }
        //количество k1 отрицательных элементов, расположенных ВЫШЕ главной диагонали
                int k1=0;
                bu=0; 
        for (i=0; i<n; ++i)
        {
                        for(j=i+1; j<m; ++j)
                            if (matr[i][j]<0) {
                                k1++;
                                buf_up[bu]=&(matr[i][j]);
                                bu++;
                            }
        }
        cout<<"\nКоличество k1 отрицательных элементов, расположенных выше главной диагонали - "<<k1<<endl;
          //количество k2 отрицательных элементов, расположенных НИЖЕ главной диагонали
                int k2=0;
                bd=0;
        for (i=0; i<n; ++i)
        {
                        for(j=0; j<i; ++j)
                            if (matr[i][j]<0) {
                                    k2=k2+1;
                                    buf_down[bd]=&(matr[i][j]);
                                    bd++;
                            }
        }
            cout<<"\nКоличество k2 отрицательных элементов, расположенных ниже главной диагонали - "<<k2<<endl;
 
        while (bu>bd){
            bu--;
            *(buf_up[bu])=-(*(buf_up[bu]));
            }
        while (bd>bu){
            bd--;
            *(buf_down[bd])=-(*(buf_down[bd]));
            }
 
            cout<<"\nИзменённый массив - "<<k2<<endl;
       for (i = 0; i < n; ++i)
        {
                for (j = 0; j < m; ++j)
                {
                        cout << matr[i][j] << "\t";
                }
                cout <<"\n" ;
         }
 
        char c;
            cin>>c;
        // Удаление матрицы из памяти
                // Удаление каждой строки матрицы 
        for (int i = 0; i <n ; ++i)
                delete[] matr [i];
        // Удаление массива строк матрицы 
        delete[] matr;
        delete[] buf_up;
        delete[] buf_down;
        return 0;
}
0
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 70
26.03.2012, 20:37  [ТС]
Kuzia domovenok, У меня измененный массив ни чем не отличается от исходного!!!
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
26.03.2012, 20:42
Цитата Сообщение от XaJlop4ik Посмотреть сообщение
Kuzia domovenok, У меня измененный массив ни чем не отличается от исходного!!!
Пример массива, который не отличается в студию. Ты забыл, что они рандомно генерируются? Я не знаю какой конкретно у тебя. Ты сколько раз запускал?
0
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 70
26.03.2012, 20:52  [ТС]
Kuzia domovenok, Очень много раз запускал... все равно не выходит(
вот скрин:
Миниатюры
Определить количество отрицательных элементов выше и ниже диагонали  
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
26.03.2012, 21:02
Ты б ещё матрицы 100 на 100 сделал, ё-моё!

У тебя количество k1=23
А количество k2 равно 22
!!Естесственно, чтобы преобразовать массив, нужно изменить лишь один минус!
Теперь ищи какой единственный из 45 минусов изменён
Называется игра "найди отличие"
я нашёл, но не скажу. Главное работает!

Добавлено через 6 минут
Ну как?
На будущее: людям будешь показывать - не задавай таких огромных массивов:
(3 на 3) или (4 на 4) самое то!
К тому же, в больших массивах и случайные числа равномернее распределены, соответственно количество отрицательных элементов в обеих половинках становится примерно равным. И изменять массив практически не нужно.
НАГЛЯДНОСТЬ же теряется!
1
10 / 10 / 1
Регистрация: 02.10.2011
Сообщений: 69
26.03.2012, 21:06
на скрине смотри 10 столбец 9 строку
1
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 70
26.03.2012, 21:12  [ТС]
Kuzia domovenok, спасибо за программу)

Dima249, спасибо, быстро нашел)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.03.2012, 21:12
Помогаю со студенческими работами здесь

Определить количество отрицательных элементов, расположенных выше главной диагонали матрицы
2. Определить количество отрицательных элементов, расположенных выше главной диагонали матрицы.

Найти число отрицательных элементов в области выше главной и ниже побочной диагонали
В квадратной матрице а (7,7) найти число отрицательных элементов в области выше главной и ниже побочной диагонали. Поменять местами...

Определить: сумма элементов выше главной диагонали меньше суммы элементов ниже главной диагонали?
Дана квадратная матрица натуральных чисел,( получаемая через rand()) .Определить, верно ли утверждение: сумма эллементов выше главной...

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

Посчитать количество отрицательных элементов выше главной диагонали
Дана задача: Посчитать количество отрицательных элементов выше главной диагонали матрицы размером nxn. Я вот написала кое что, но считает...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
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. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru