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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
botasa
3 / 3 / 0
Регистрация: 18.01.2011
Сообщений: 131
#1

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

29.09.2012, 17:57. Просмотров 416. Ответов 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;
            }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2012, 17:57     Перестроить матрицу
Посмотрите здесь:

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

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

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

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

Отсортировать матрицу и снова сделать из нее начальную матрицу - C++
значит условие таково: с клавиатуры вводится ряд чисел, его нужно занести в матрицу 6х6, потом отсортировать матрицу и снова сделать из нее...

Функция, принимающая матрицу, возвращающая матрицу - C++
... double msin(int **mtrx) { double mm; for (int i = 0; i &lt; 2; i++) for(int j=0; j&lt;3;j++) mm=sin(mtrx); return...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6477 / 2252 / 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
Почетный модератор
6477 / 2252 / 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
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,256
Завершенные тесты: 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++
матрицу умножить на матрицу,,помогите решить задачу.

Умножить матрицу на матрицу - C++
Как транспонированную матрицу At умножить на другую транспонированную Bt? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using...

Матрицу А умножить на Матрицу В - C++
Народ, помогите написать программу, которая перемножает 2 матрицы. #include &lt;stdio.h&gt; #include &lt;conio.h&gt; int main (void) { ...

Проверить и перестроить матрицу - Pascal
Помогите пожалуйста решить задачу. Написать программу. Граф задан матрицей инцеденции. Определить является ли он антисимметричным или...


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

Или воспользуйтесь поиском по форуму:
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     Перестроить матрицу
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru