Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
xXRUSHXx
0 / 0 / 0
Регистрация: 02.05.2015
Сообщений: 22
1

Перестановка строк матрицы по условию

17.05.2015, 16:58. Просмотров 612. Ответов 5
Метки нет (Все метки)

Даны две целочисленные матрицы размерностью [ 5х7 ] . найти разницу матриц . Определить номер первого из столбцов , содержащих хотя бы один нулевой элемент . Переставляя строки заданной матрицы , расположить их в соответствии с ростом характеристик. Характеристикой строки матрицы назовем сумму ее положительных четных элементов .
ПОМОГИТЕ СОЕДИНИТЬ ВСЕ ПО ПОРЯДКУ
C++ (Qt)
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
#include <iostream>
#define R 5 // число строк
#define C 7  //число столбцов
 
using namespace std;
 
int main(){
    
    int matrix1[R][C], matrix2[R][C];
    int zero_column = -1; // номер столбца с первым нулем
    
    //Читаем первую матрицу
    for ( int i = 0; i < R; i++ )
        for ( int j = 0; j < C; j++ )
            cin >> matrix1[i][j];       
    
    
    //Читаем вторую матрицу
    for ( int i = 0; i < R; i++ )
        for ( int j = 0; j < C; j++ )
            cin >> matrix2[i][j];
    cout << endl << endl; 
    
    
    int matrix3[R][C]; //матрица с разницей, от второй отнимаем первую
    
    //находим каждый элемент, проверяем на нуль и сразу выводим на экран
    for ( int i = 0; i < R; i++ )
    {
        for ( int j = 0; j < C; j++ )
        {
            matrix3[i][j] = matrix2[i][j] - matrix1[i][j];
            if ( matrix3[i][j] == 0 && zero_column == -1 )
                zero_column = j;
            cout << matrix3[i][j] << " ";
        }
        cout << endl;
    }
    
    if ( zero_column == -1 )
        cout << "No zero elements was found" << endl;
    else
        cout << "Column with first zero element: " << zero_column << endl;
C++ (Qt)
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
cout « "Массив характеристик:" « endl;
for(int i = 0; i < C; ++i)
cout « setw(3) « R[i] « ' ';
cout « endl;
 
for (int i = 0; i < C - 1; ++i) 
{ 
for (int j = 0; j < C - i - 1; ++j) 
{ 
if (m[j] > C[j+1])
{
swap(m[j], C[j + 1]);
swap(v[j], v[j + 1]);
}
}
}
 
cout « "Массив по возрастанию характеристик:" « endl;
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
{
cout « setw(3) « v[j][i] « ' ';
}
cout « endl;
}
 
            
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2015, 16:58
Ответы с готовыми решениями:

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

Сортировка строк матрицы C++ (перестановка строк)
Помогите пожалуйста, в матрице из целых чисел поменять местами первую строку и...

Перестановка строк матрицы
Прошу прощения если такая тема есть, поиск не помог мне её найти. Дана матрица...

Перестановка строк матрицы
Ребята помогите, если не сложно! Накипело задачку решить, а в С++ баран) Вот...

Перестановка строк матрицы
Дана матрица размером М:N,найти матрицу полученную из данной перестановкой...

5
Черный мечник
48 / 49 / 34
Регистрация: 29.12.2012
Сообщений: 445
17.05.2015, 17:09 2
Мне проше написать по своему!Или вам соеденить обязательно?
0
xXRUSHXx
0 / 0 / 0
Регистрация: 02.05.2015
Сообщений: 22
17.05.2015, 17:24  [ТС] 3
Цитата Сообщение от Черный мечник Посмотреть сообщение
Мне проше написать по своему!Или вам соеденить обязательно?
Если можно, то и по своему
0
Черный мечник
48 / 49 / 34
Регистрация: 29.12.2012
Сообщений: 445
17.05.2015, 18:45 4
тогда ок...Ша начну

Добавлено через 9 минут
найти разницу матриц, у вас от второй отнимается первая....
Ну я также сделал

Добавлено через 17 минут
Переставляя строки заданной матрицы....про какую матрицу идет реч из трех или вообше новую ответти и я допишу код?
0
xXRUSHXx
0 / 0 / 0
Регистрация: 02.05.2015
Сообщений: 22
17.05.2015, 19:33  [ТС] 5
Цитата Сообщение от Черный мечник Посмотреть сообщение
Переставляя строки заданной матрицы....про какую матрицу идет реч из трех или вообше новую ответти и я допишу код?
Новую сделать кажется!!!
0
Черный мечник
48 / 49 / 34
Регистрация: 29.12.2012
Сообщений: 445
17.05.2015, 21:18 6
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
#include "iostream"
#include <ctime>  
#include <iomanip>
 
using namespace std;
 
int main()
{   
 setlocale(LC_ALL,"Rus");
 srand(time(0)); // генерация случайных чисел 
 const int N=5,M=7;
 int vibor;
 int matrix_One[N][M], matrix_Two[N][M],matrix_three[N][M];
 int zero_column = -1; // номер столбца с первым нулем
 
 cout<<"Введите 0, если хотите вручную заполнить ваши матрицы,\n"
       "или любую другую цифру если хотите авто заполнeние\n"
       "Выбор:";
 cin>>vibor;
  if(vibor!=0)
   {
    for (int i = 0; i < N; i++)     
     for (int j = 0; j < M; j++)             
         {
          matrix_One[i][j]=rand() % 100;
          matrix_Two[i][j]=rand() % 100;
         }
   }
  else
   {
       cout<<"\nЗаполняйте первую матрицу.\n";
     for (int i = 0; i < N; i++)     
      for (int j = 0; j < M; j++)
        { cout<<"элемент:["<<i<<"]["<<j<<"]=";
          cin>> matrix_One[i][j];
        }
       cout<<"\nЗаполняйте вторую матрицу.\n";
     for (int i = 0; i < N; i++)     
      for (int j = 0; j < M; j++)
        { cout<<"элемент:["<<i<<"]["<<j<<"]=";
          cin>>matrix_Two[i][j];
        }
   }
 cout<<"\nВаша  первая матрица.\n";
   for (int i = 0; i < N; i++)  {   
      for (int j = 0; j < M; j++)
          cout<<setw(3)<<matrix_One[i][j];
          cout<<endl;}
 cout<<"\nВаша вторая матрица.\n";
   for (int i = 0; i < N; i++)  {   
      for (int j = 0; j < M; j++)
          cout<<setw(3)<<matrix_Two[i][j];
      cout<<endl;}
 
  cout<<"\nВаша треть матрица(разность двух первых).\n";
 
    for ( int i = 0; i < N; i++ )
    {
        for ( int j = 0; j < M; j++ )
        {
matrix_three[i][j] = matrix_Two[i][j] - matrix_One[i][j];  //Тут можно поменять местами чтобы от первой отнималась вторая
            if ( matrix_One[i][j] == 0 && zero_column == -1 )
                zero_column = j;
            cout << setw(3)<<matrix_three[i][j];
        }
        cout << endl;
    }
  
    if ( zero_column == -1 )
        cout << "\nНуля нет не в одном стобце\n" << endl;
    else
        cout << "\nНомер столбца содержашего НОЛЬ: " << zero_column << endl<<endl;
  int sum1=0,sum2=0;   
  cout << "\nМатрица которую надо отсортировать по характеристики:\n";
  int matrix[N][M];         //матриц для Характеристик
   for (int i = 0; i < N; i++) {    
     for (int j = 0; j < M; j++)             
         {
          matrix[i][j]=rand() % 100;
          cout<<setw(3)<<matrix[i][j];
         }
       cout << endl;
    }
     //НАЧАЛО сортироки
   for (int i=0; i < N; i++) {                 
      sum1=0;sum2=0;
         for (int i=0; i < N-1; i++) 
          {
              for (int j=0; j < M; j++) 
                {   
                  if((matrix[i][j]%2)==0)
                      {
                        sum1=sum1+matrix[i][j];
                      }
                  if((matrix[i+1][j]%2)==0)
                       {
                           sum2=sum2+matrix[i+1][j];
                       }
    
                  if(j==M-1)
                    {
                        if(sum1>sum2)
                        {   
                            for ( int h = 0; h < M; h++ )
                            {
                              int temp=matrix[i][h];
                              matrix [i][h]=matrix[i+1][h];
                              matrix[i+1][h]=temp;
                            }
                       }
                    }
                 }    
              } 
   }
 cout<<"\n Отсортированная матрица.\n";
   for (int i = 0; i < N; i++)  {   
      for (int j = 0; j < M; j++)
          cout<<setw(3)<<matrix[i][j];
          cout<<endl;}
  // КОНЕЦ сортировки
 system("pause");
 return 0;
}
Добавлено через 3 минуты
xXRUSHXx, если не новую а какуето из сушествуюших то я закоментировал:
//НАЧАЛО сортироки
// КОНЕЦ сортировки
между ними matrix[i][j] замени на нужную и та отсортируется

Добавлено через 2 минуты
И кстате второй кусок кода что ты кидал вообше не очем он просто вырваный откудато...
Алгоритм сортировки самому придумывать пришлось
0
17.05.2015, 21:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2015, 21:18

Перестановка строк матрицы местами
В общем, такая задача: дана целочисленная матрица размера m на n. Найти...

Перестановка местами строк матрицы
Задано двухмерный массив (матрицу) А размером n*m. Целые числа m и n (в ввиде...

Перестановка местами строк и столбцов матрицы
Помогите решить задачу: Дана матрица А(nxm).Получить матрицу, получающуюся из...


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

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

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