Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
3 / 3 / 5
Регистрация: 18.01.2011
Сообщений: 131
1

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

29.09.2012, 17:57. Показов 704. Ответов 9
Метки нет (Все метки)

Есть матрица

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;
            }
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.09.2012, 17:57
Ответы с готовыми решениями:

Построить линейный список из входной последовательности чисел и перестроить его
Задание выполнить, применяя списки двух видов: стека и очереди. Построить линейный список из...

Готовый код.Как перестроить структуру под класс.wxDex-C++
Всем доброго вечера и хорошего настроения! Знатоки C/C++ подскажите как &quot;переделать&quot; готовую...

Перестроить список так, чтобы значения увеличивались от головы списка к его концу
1.В файле хранятся данные в виде записей формата R. R УЗЕЛ УСТ-ВА Устройство Номер...

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

9
Почетный модератор
7385 / 2629 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
29.09.2012, 18:02 2
Цитата Сообщение от botasa Посмотреть сообщение
что б элементы в ней были в таком положении
Сортировка самая обыкновенная. Только переставлять будешь не элементы, а строки матрицы, образно.
0
3 / 3 / 5
Регистрация: 18.01.2011
Сообщений: 131
29.09.2012, 18:19  [ТС] 3
ну сортировку бульбашкой к примеру могу сделать над самыми элементами массива, но как целые строки переставить местами, и пользоваться дополнительным массовом из количеством элементов понятия не имею
0
Почетный модератор
7385 / 2629 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
29.09.2012, 18:22 4
Цитата Сообщение от botasa Посмотреть сообщение
но как целые строки переставить местами
ты можешь переставить первый элемент, например, второй строки, с первым элементом первой?
можно делать указателями, тогда будет достаточно переставить их )))) но это дела не меняет.
0
3 / 3 / 5
Регистрация: 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# там практически нету УКАЗАТЕЛЕЙ да и не люблю я указатели =) тут код на С++ переписал, так как больше народа по С++ читает...
0
250 / 232 / 46
Регистрация: 05.02.2010
Сообщений: 3,288
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;
}
0
39 / 39 / 5
Регистрация: 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");
}
0
3 / 3 / 5
Регистрация: 18.01.2011
Сообщений: 131
29.09.2012, 18:46  [ТС] 8
да как свапнуть элементы я знаю, я не знаю как вот это сделать :
Расположить строки заданной матрицы по возрастанию количества одинаковых элементов в каждой строке.
0
39 / 39 / 5
Регистрация: 14.09.2012
Сообщений: 85
29.09.2012, 18:53 9
Где я пишу про свап элементов? У меня меняются строки, откомпилируй и посмотри.
0
3 / 3 / 5
Регистрация: 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;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.09.2012, 19:41

Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке
Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке.

Получить матрицу из чисел, заполняющих матрицу по линиям, параллельным главной диагонали
Получить матрицу A=(aij), i,j=1..n, n&lt;=100, элементами которой является ряд натуральных чисел,...

Нужно написать пример умножения вектора на вектор, матрицу на матрицу
Нужно написать пример умножения вектора на вектор, матрицу на матрицу, умножения вектора на...

Преобразовать матрицу X(n,m) в матрицу X(a,b) путём удаления лишних строк и столбцов
Преобразовать матрицу X(n,m) в матрицу X(a,b) путём удаления лишних строк и столбцов (n&gt;a,m&gt;b)....


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru