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

Создайте одномерный массив, который содержит отрицательные значения трех динамических двумерных массивов А, В, С

11.04.2020, 21:16. Показов 2390. Ответов 2

Студворк — интернет-сервис помощи студентам
Задание 12. Есть 3 двумерных массива А, В, С. Количество строк и столбцов для них вводит пользователь с клавиатуры.
Создайте одномерный массив, который содержит отрицательные значения для А, В, С без повторений.

Не работает функция negative_elements, конкретно не получается собрать значения с трех массивов в одномерный массив, получается перезапись значений массива negative_elements, хотя хотелось бы в нем собрать все отриц значения.

C++
1
2
3
4
5
6
7
8
9
10
11
    for (int i = 0; i < cnt_A; i++) {
        negative_elements[i] = negative_A[i];
    }
 
    for (int i = cnt_A; i <= cnt_B; i++) {
        negative_elements[i] = negative_B[i];
    }
 
    for (int i = cnt_B; i <= cnt_C; i++) {
        negative_elements[i] = negative_C[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
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
#include <iostream>
#include <cstdlib>
#include<time.h>
using namespace std;
 
const int SIZE = 30; // макс значение для функции rand();
 
void negative_elements_A_B_C(int** _array_A, int** _array_B, int** _array_C, int _cols_A, int _rows_A, int _cols_B, int _rows_B, int _cols_C, int _rows_C) {
 
    int* negative_elements = new int[(_rows_A * _cols_A) + (_rows_B * _cols_B) + (_rows_C * _cols_C)]{};  
    int* negative_A = new int[_rows_A * _cols_A]{};    //массив для записи отриц значений массива А
    int* negative_B = new int[_rows_B * _cols_B]{};    //массив для записи отриц значений массива В
    int* negative_C = new int[_rows_C * _cols_C]{};   //массив для записи отриц значений массива С
    int cnt_A = 0;         // счетчик отриц элементов массива А
    int cnt_B = 0;        // счетчик отриц элементов массива в
    int cnt_C = 0;       // счетчик отриц элементов массива с
    int cnt_all = 0;     // счетчик всех отриц элементов 
 
    for (int i = 0; i < _cols_A; i++) {
        for (int j = 0; j < _cols_A; j++) {
            if (_array_A[i][j] < 0) {
                negative_A[i] = _array_A[i][j];
                cnt_A++;
            }
        }
    }
 
    for (int i = 0; i < _rows_B; i++) {
        for (int j = 0; j < _cols_B; j++) {
            if (_array_B[i][j] < 0) {
                negative_B[i] = _array_B[i][j];
                cnt_B++;
            }
        }
    }
 
    for (int i = 0; i < _rows_C; i++) {
        for (int j = 0; j < _cols_C; j++) {
            if (_array_C[i][j] < 0) {
                negative_C[i] = _array_C[i][j];
                cnt_C++;
            }
        }
    }
 
 
    cnt_all = cnt_A + cnt_B + cnt_C;
 
    for (int i = 0; i < cnt_A; i++) {
        negative_elements[i] = negative_A[i];
    }
 
    for (int i = cnt_A; i <= cnt_B; i++) {
        negative_elements[i] = negative_B[i];
    }
 
    for (int i = cnt_B; i <= cnt_C; i++) {
        negative_elements[i] = negative_C[i];
    }
 
 
    cout <<" Массив отриц"  << endl;
 
    for (int i = 0; i < cnt_all; i++) {
        cout << negative_elements[i];
    }
 
    delete[]negative_A;
    delete[]negative_B;
    delete[]negative_C;
    delete[]negative_elements;
}
 
 
int** creation_array (int _rows, int _cols) {
    int** array = new int* [_rows];
    for (int i = 0; i < _rows; i++) {
        array[i] = new int[_cols];
    }
 
    for (int i = 0; i < _rows; i++) {
        for (int j = 0; j < _cols; j++) {
            array[i][j] = rand() % SIZE - 10;
        }
    }
    return array;
}
 
void print_array (int** _array, int _rows, int _cols) {
    for (int i = 0; i < _rows; i++) {
        for (int j = 0; j < _cols; j++) {
            cout << _array[i][j] << " ";
        }
        cout << endl;
    }
}
 
int main() {
    setlocale(LC_ALL, "Rus");
    srand(time(NULL));
 
    int rows_A = 0;
    int cols_A = 0;
 
    int rows_B = 0;
    int cols_B = 0;
 
    int rows_C = 0;
    int cols_C = 0;
 
    int** array_A = new int* [rows_A];
    int** array_B = new int* [rows_B];
    int** array_C = new int* [rows_C];
 
    cout << "Введите количество строк для массива А: >";
    cin >> rows_A;
    cout << "Введите количество столбцов для массива А: >";
    cin >> cols_A;
 
    array_A = creation_array(rows_A, cols_A);
    cout << "Массив А: " << endl << endl;
    print_array(array_A, rows_A, cols_A);
 
    cout << endl;
    cout << "Введите количество строк для массива B: >";
    cin >> rows_B;
    cout << "Введите количество столбцов для массива B: >";
    cin >> cols_B;
 
    array_B = creation_array(rows_B, cols_B);
    cout << "Массив B: " << endl << endl;
    print_array(array_B, rows_B, cols_B);
 
    cout << endl;
    cout << "Введите количество строк для массива C: >";
    cin >> rows_C;
    cout << "Введите количество столбцов для массива C: >";
    cin >> cols_C;
 
    array_C = creation_array(rows_C, cols_C);
    cout << "Массив C: " << endl << endl;
    print_array(array_C, rows_C, cols_C);
 
    cout << endl;
    cout << "Массив отрицательных элементов А,В,С: ";
    negative_elements_A_B_C(array_A, array_B, array_C, cols_A, rows_A, cols_B, rows_B, cols_C, rows_C);
 
 
    for (int i = 0; i < rows_A; i++) {
        delete[]array_A[i];
    }
    delete[]array_A;
 
    for (int i = 0; i < rows_B; i++) {
        delete[]array_B[i];
    }
    delete[]array_B;
 
    for (int i = 0; i < rows_C; i++) {
        delete[]array_C[i];
    }
    delete[]array_C;
 
 
    cout << endl;
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.04.2020, 21:16
Ответы с готовыми решениями:

Создайте одномерный массив C(mass3), который содержит элементы,присутствующие в обоих массивах A(mass) и B(mass2)
Создайте одномерный массив C(mass3), который содержит элементы,присутствующие в обоих массивах A(mass) и B(mass2).Помогите пожалуйста. ...

Из 2 двумерных массивов в одномерный массив.
Из 2 двумерных массивов в одномерный добавить числа,которые содержат 0. Например 2 3 4 30 2 3 1 20 5 50 ...

Найти и сравнить средние значения элементов трех вещественных двумерных массивов
Найти и сравнить средние значения элементов трех вещественных двумерных массивов!помогите,тремя способами.

2
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
11.04.2020, 21:32
Лучший ответ Сообщение было отмечено elitedobermann как решение

Решение

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
void negative_elements_A_B_C(int** _array_A, int** _array_B, int** _array_C, int _cols_A, int _rows_A, int _cols_B, int _rows_B, int _cols_C, int _rows_C) {
 
    int cnt_all = 0;
 
    for (int i = 0; i < _rows_A; i++) {
        for (int j = 0; j < _cols_A; j++) {
            if (_array_A[i][j] < 0) {
                cnt_all++;
            }
        }
    }
 
    for (int i = 0; i < _rows_B; i++) {
        for (int j = 0; j < _cols_B; j++) {
            if (_array_B[i][j] < 0) {
                cnt_all++;
            }
        }
    }
 
    for (int i = 0; i < _rows_C; i++) {
        for (int j = 0; j < _cols_C; j++) {
            if (_array_C[i][j] < 0) {
                cnt_all++;
            }
        }
    }
 
    int* negative_elements = new int[cnt_all];
    int idx = 0;
 
    for (int i = 0; i < _rows_A; i++) {
        for (int j = 0; j < _cols_A; j++) {
            if (_array_A[i][j] < 0) {
                negative_elements[idx++] = _array_A[i][j];
            }
        }
    }
 
    for (int i = 0; i < _rows_B; i++) {
        for (int j = 0; j < _cols_B; j++) {
            if (_array_B[i][j] < 0) {
                negative_elements[idx++] = _array_B[i][j];
            }
        }
    }
 
    for (int i = 0; i < _rows_C; i++) {
        for (int j = 0; j < _cols_C; j++) {
            if (_array_C[i][j] < 0) {
                negative_elements[idx++] = _array_C[i][j];
            }
        }
    }
 
    cout << " Массив отриц" << endl;
 
    for (int i = 0; i < cnt_all; i++) {
        cout << negative_elements[i];
    }
 
    delete[] negative_elements;
}
1
2 / 2 / 0
Регистрация: 26.01.2020
Сообщений: 32
11.04.2020, 22:01  [ТС]
zayats80888, спасибо большое за потраченное время и найденное решение, очень получилось лаконично и без кучи лишних дин.массивов. Спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.04.2020, 22:01
Помогаю со студенческими работами здесь

Массив: создать одномерный массив из двумерных массивов
Всем привет, подскажите пожалуйста, мне надо создать одномерный массив из двумерных массивов? Возможно ли такое сделать и как? Двумерные...

Одномерный массив. Сформировать такой массив В, который содержит копию положительных элементов массива А
Дан одномерный массив чисел А. Сформировать такой массив В, который содержит копию положительных элементов массива А.

Обработка двумерных динамических массивов
Помогите написать программу Даны два двумерных динамических массива одинакового размера. Создать третий динамический массив содержащий...

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

Создание динамических двумерных массивов
Ошибка в том что массиву не дает число массиву Вызвано исключение по адресу 0x006526FC в лаб 3 3.exe: 0xC0000005: нарушение прав доступа...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru