Форум программистов, компьютерный форум CyberForum.ru

Перестроить матрицу - C++

Восстановить пароль Регистрация
 
botasa
3 / 3 / 0
Регистрация: 18.01.2011
Сообщений: 131
29.09.2012, 17:57     Перестроить матрицу #1
Есть матрица

1, 1, 5, 3, 8
4, 1, 6, 4, 4
0, 5, 1, 7, 9
8, 1, 3, 1, 1
9, 9, 1, 2, 9

в матрице надо подсчитать количество одинаковых элементов в каждой строке
в данной матрице будет :
2
3
0
3
3

и эту матрице надо так переделать, что б элементы в ней были в таком положении
0
2
3
3
3

то есть вот такого плана:
0, 5, 1, 7, 9
1, 1, 5, 3, 8
4, 1, 6, 4, 4
8, 1, 3, 1, 1
9, 9, 1, 2, 9

количество одинаковых элементов я подсчитал, а как дальше я хз
C++
1
2
3
4
5
6
7
8
9
10
11
12
            int m[5];
 
            int count1 = 0;
            int c = 0;
            for (int i = 0; i < 5; i++) {
                count1 = 0;
                for (int j = 1; j < 5; j++) {
                    if (matrix[i][j - 1] == matrix[i][j])
                        count1++;
                }
                m[i] = count1;
            }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2012, 17:57     Перестроить матрицу
Посмотрите здесь:

Заполнить матрицу 9x9 случайными числами. Отобразить матрицу симметрично относительно главной диагонали C++
C++ Перестроить список так, чтобы значения увеличивались от головы списка к его концу
Готовый код.Как перестроить структуру под класс.wxDex-C++ C++
C++ Заполнить матрицу случайными числами. Развернуть матрицу на 90(градусов) против часовой стрелки
Получить матрицу из чисел, заполняющих матрицу по линиям, параллельным главной диагонали C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
29.09.2012, 18:02     Перестроить матрицу #2
Цитата Сообщение от botasa Посмотреть сообщение
что б элементы в ней были в таком положении
Сортировка самая обыкновенная. Только переставлять будешь не элементы, а строки матрицы, образно.
botasa
3 / 3 / 0
Регистрация: 18.01.2011
Сообщений: 131
29.09.2012, 18:19  [ТС]     Перестроить матрицу #3
ну сортировку бульбашкой к примеру могу сделать над самыми элементами массива, но как целые строки переставить местами, и пользоваться дополнительным массовом из количеством элементов понятия не имею
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
29.09.2012, 18:22     Перестроить матрицу #4
Цитата Сообщение от botasa Посмотреть сообщение
но как целые строки переставить местами
ты можешь переставить первый элемент, например, второй строки, с первым элементом первой?
можно делать указателями, тогда будет достаточно переставить их )))) но это дела не меняет.
botasa
3 / 3 / 0
Регистрация: 18.01.2011
Сообщений: 131
29.09.2012, 18:36  [ТС]     Перестроить матрицу #5
int tmp = m[1][0];
m[1][0] = m[0][0];
m[0][0] = tmp;

переставить элементы это не проблема, но не могу понять каким образом это делать из 2-м массивом, где записаны количества повторных элементов в каждой строке

задача мне мозги выносит ... и это вопше лаба по C# там практически нету УКАЗАТЕЛЕЙ да и не люблю я указатели =) тут код на С++ переписал, так как больше народа по С++ читает...
m1Rr0r
 Аватар для m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,213
Завершенные тесты: 2
29.09.2012, 18:44     Перестроить матрицу #6
Swap(massiv[row1][j], massiv[row2][j]);

Добавлено через 4 минуты
Например тебе нужно поменять местами строку 0 и строку 4.
берешь первый эл строки 0, меняешь с первым элементом строки 4, и так до i-того, пока всю строку не пробежишь
C++
1
2
for(int i = 0; i < sizeRow; i++)//sizeRow в данном случае количество столбцов в матрице
Swap(mas[0][i], mas[4][i])
ну а Swap выглядит примерно так:
C++
1
2
3
4
5
void Swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
veverix
39 / 39 / 2
Регистрация: 14.09.2012
Сообщений: 85
29.09.2012, 18:46     Перестроить матрицу #7
Если массив - динамический, то можно просто менять адреса строк.
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
#include <iostream>
using namespace std;
 
int eqInStr(int *m, int n)
{
    int eq = 0;
    for(int i=0; i<n; i++)
        for(int j=i; j<n; j++)
            if(m[i] == m[j] && i!=j) eq++;
    return eq;
}
 
void swap(int *m1, int *m2)
{
    int *temp = m1;
    m1 = m2;
    m2 = temp;
}
 
void main()
{
    int n = 5;
    int **mm = new int*[n];             //обьявление массива n*n элементов, заполнение случайными числами
    for(int i=0; i<n; i++)              
    {
        mm[i] = new int[n];
        for(int j=0; j<n; j++)
            mm[i][j] = rand()%10;
    }
    for(int i=0; i<n; i++)              //вывод массива
    {
        for(int j=0; j<n; j++)
            cout<<mm[i][j]<<' ';
        cout<<endl;
    }
    cout<<endl;
    int *eq = new int[n];               //создание таблицы повторений
    for(int i=0; i<n; i++)
        eq[i] = eqInStr(mm[i], n);
    for(int i=0; i<n; i++)
        cout<<eq[i]<<' ';
    cout<<endl<<endl;
    for(int i=0; i<n; i++)              //сортировка
        for(int j=i; j<n; j++)
            if(eq[i] > eq[j])
            {
                int temp = eq[i];
                eq[i] = eq[j];
                eq[j] = temp;
                int *tempm = mm[i];
                mm[i] = mm[j];
                mm[j] = tempm;
            }
    for(int i=0; i<n; i++)
        cout<<eq[i]<<' ';
    cout<<endl<<endl;
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
            cout<<mm[i][j]<<' ';
        cout<<endl;
    }
        system("pause");
}
botasa
3 / 3 / 0
Регистрация: 18.01.2011
Сообщений: 131
29.09.2012, 18:46  [ТС]     Перестроить матрицу #8
да как свапнуть элементы я знаю, я не знаю как вот это сделать :
Расположить строки заданной матрицы по возрастанию количества одинаковых элементов в каждой строке.
veverix
39 / 39 / 2
Регистрация: 14.09.2012
Сообщений: 85
29.09.2012, 18:53     Перестроить матрицу #9
Где я пишу про свап элементов? У меня меняются строки, откомпилируй и посмотри.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2012, 19:41     Перестроить матрицу
Еще ссылки по теме:

Сформировать квадратную матрицу; транспонировать матрицу и инвертировать порядок элементов каждой ее строки C++
Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке C++
C++ Непонятно условие задачи: Вывести исходную матрицу, преобразованную матрицу и вектор Х.

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

Или воспользуйтесь поиском по форуму:
botasa
3 / 3 / 0
Регистрация: 18.01.2011
Сообщений: 131
29.09.2012, 19:41  [ТС]     Перестроить матрицу #10
ша попробую на C# переписать и отпишу =)

Добавлено через 40 минут
чет вот тут не могу разобраться

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 for (int i = 0; i < 5; i++)
            {
                for (int j = i; j < 5; j++)
                {
                    if (m[i] > m[j])
                    {
 
                        int tmp = m[i];
                        m[i] = m[j];
                        m[j] = tmp;
 
                        int temp = matrix[i, i];
                        matrix[i, i] = matrix[j, j];
                        matrix[j, j] = temp;
                    }
                }
}

вроде тут не так идет это все
C#
1
2
3
int temp = matrix[i, i];
matrix[i, i] = matrix[j, j];
matrix[j, j] = temp;
Yandex
Объявления
29.09.2012, 19:41     Перестроить матрицу
Ответ Создать тему
Опции темы

Текущее время: 19:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru