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

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

23.03.2019, 20:11. Показов 2188. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста, нужно преобразовать двумерный массив таким образом, чтобы сначала располагались все элементы
равные нулю, а потом все остальные. Как это делать с одномерными я знаю, а с двумерными это так же или по другой схеме? я пыталась код для одномерного массива переделать, но ничего не получилось. Помогите пожалуйста, кто знает как делать

На всякий случай приведу код программы с массивом

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
#include <iostream>
#include <string>
#include <ctime>
 
using namespace std;
 
int main()
{
    int n, m, count = 0, i, j;
    cout << "m="; cin >> m;
    cout << "n="; cin >> n;
 
    double **A = new double*[m], sum = 0, sum1 = 0, sum2 = 0;
    for (int i = 0; i < m; i++)
        A[i] = new double[n];
 
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
    {   
            A[i][j] = rand() % 19 - 9;
    }
    cout << endl;
 
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cout << A[i][j] << "\t";
        }
        cout << endl;
    }
 
    for (int i = 0; i < n; i++)
 
        delete[] A[i];
 
    delete[] A;
 
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2019, 20:11
Ответы с готовыми решениями:

Преобразовать массив таким образом чтобы сначала располагались все элементы равные нулю а потом остальные
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using namespace std; int...

Преобразовать список таким образом, чтобы сначала располагались все элементы, равные нулю, а потом - все остальные
Подскажите/помогите, не знаю как реализовать в коде. Поидее, мне нужно найти нуль, затем...

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

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

2
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
23.03.2019, 21:08 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*
Преобразовать двумерный массив таким образом, 
чтобы сначала располагались все элементы равные нулю, а потом все остальные.
*/
 
#include <iostream>
 
    using namespace std;
 
int main() {
    int n, m, k;
    cout << "Enter a matrix size:\n";
    cout << "n = ";
    cin >> n;
    cout << "m = ";
    cin >> m;
    int** a = new int*[n];
    for (int i = 0; i < n; i++) {
        a[i] = new int[m];
    }
    int* b = new int[n*m];
    cout << "Enter a matrix:\n";
    k = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cin >> a[i][j];
            b[k++] = a[i][j];
        }
    }
    for (int i = 0; i < n * m; i++) {
        for (int j = n * m - 1; j > i; j--) {
            if ((!(b[j-1] == 0)) && (b[j] == 0)) {
                swap(b[j-1], b[j]);
            }
        }
    }
    k = 0;
    cout << "Output of the program:\n";
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            a[i][j] = b[k++];
            cout << a[i][j] << " ";
        }
        cout << "\n";
    }
    for (int i = 0; i < n; i++) {
        delete [] a[i];
    }
    delete [] a;
    delete [] b;
    system("pause");
    return 0;
}
1
1 / 1 / 0
Регистрация: 21.03.2019
Сообщений: 89
24.03.2019, 18:23  [ТС] 3
Fixer_84, спасибо большое, переделала немного, все работает))
0
24.03.2019, 18:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2019, 18:23
Помогаю со студенческими работами здесь

Преобразовать массив так, чтобы сначала располагались все элементы, равные нулю, а потом все остальные
Ребят помогите с задачей я не программист нужно лабу сделать В одномерном массиве, состоящем из n...

Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом - все остальные
Помогите, пожалуйста. как составить код в с++. Дан целочисленный массив размера N. Преобразовать...

Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом – все отрицательные
В одномерном массиве, состоящем из n целочисленных элементов, вычислить: Преобразовать массив...

Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом все отрицательные
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1.Произведение элементов...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru