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

Перестановка строк в матрице (С++) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ задача на массив http://www.cyberforum.ru/cpp-beginners/thread449797.html
Array39. Дан массив размера N. Найти количество его промежутков монотонности (то есть участков, на которых его элементы возрастают или убывают).
C++ перевод с паскаля на С++ Дан массив ненулевых целых чисел размера N. Проверить, образуют ли его элементы геометрическую прогрессию (см. задание 4). Если образуют, то вывести знаменатель прогрессии, если нет — вывести 0.} Задание 4. Дано целое число N (> 1), а также первый член A и знаменатель D геометрической прогрессии. Сформировать и вывести массив размера N, содержащий N первых членов данной прогрессии:} Program... http://www.cyberforum.ru/cpp-beginners/thread449792.html
дано натуральное число N. Определить входит ли цифра N в это число? C++
дано натуральное число N. Определить входит ли цифра N в это число? никак не могу составить программу для этой задачи...
Создайте массив из пяти фамилий и выведите их на экран C++
1. Создайте массив из пяти фамилий и выведите их на экран те из них, которые начинаются с определенной буквы, которая вводится с клавиатуры. 2. Даны координаты вершин многоугольника (x1, y1,x2,y2,…x10,y10). Напишите программу для вычисления его периметра (вычисление расстояния между вершинами оформить подпрограммой). заранее очень сильно благодарю!сам не особо просто шарю,бьюсь,бьюсь,не...
C++ Файловый указатель http://www.cyberforum.ru/cpp-beginners/thread449763.html
как мне переместить файловый указатель в конец строки? например это: fseek(fp, 0L, SEEK_SET); это переводить в начало файла а это в конец файла: result = fseek(fp, 0L, SEEK_END); а как будет только переместить его в конец первой строки ?
C++ Составление программ на использование двумерных массивов Написать программу, которая запрашивает размерность двумерного массива, заполняет его случайными числами от 4 до 12 и меняет местами первый и последний столбец массива. подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
27.02.2012, 21:23     Перестановка строк в матрице (С++)
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include <windows.h>
#include <stdio.h>
#include <time.h>
using namespace std;
 
 
//функция определение номера строки матрицы,содержащей максимальный элемент
//Эта функция принимает количество строк и столбцов матрицы и указатель н анеё
//возвращат номер строки, содержащей максимальный элемент
int max_matr (int kol_vo_strok, int kol_vo_stolb, int matrix [] [4]) {
 
 int max, temp; temp= 0; 
 for (int i= 0; i< kol_vo_strok; i++)  
  for (int j= 0; j< kol_vo_stolb; j++) 
   if (matrix[i][j]>= temp) {
    temp= matrix[i][j]; 
    max= i;
   } 
 return max;
}
 
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
int main () {
 
 //Это для русского языка, если ё
 SetConsoleCP (1251);
 SetConsoleOutputCP (1251);
 
 
 
 //матрица A 
 int A [4][4];
 //Заполним её случайными числами от 0 до 99 включительно 
 for (int i= 0; i< 4; i++)  
  for (int j= 0; j< 4; j++)  
   scanf ("%d",&A[i][j]);
 
 //матрица B 
 int B [4][4];
 //Заполним её по правилам, указанным в задании
 for (int i= 0; i< 4; i++) 
  for (int j= 0; j< 4; j++) 
   if (i==j) 
    B[i][j]=0;
   else   
    B[i][j]= A[i][j]+ A[j][i];
 
 //матрица C (может пригодиться, может нет, кто его знает)
 int C [4][4];
 //Заполним нолями
 for (int i= 0; i< 4; i++) 
  for (int j= 0; j< 4; j++) 
   C[i][j]= 0; 
 
                                 //+
                                 //+
                                 //+
                                 
 
 //Есть две заполненых матрицы, теперь найдём номера строк,
 //содержащих максималные элементы таблиц, IA и IB сответственно
 int IA, max_A; max_A= 0; 
 int IB, max_B; max_B= 0;
 
 //Побегаемся по матрицам 
 for (int i= 0; i< 4; i++) 
  for (int j= 0; j< 4; j++) { 
   //ДЛя матрицы A
   if (A[i][j]>= max_A) {
    max_A= A[i][j]; 
    IA= i;
   } 
   //и B соответственное
   if (B[i][j]>= max_B) {
    max_B= B[i][j]; 
    IB= i;
   } 
  }
  //После этого в переменной IA номер строки, содержащей максимальный 
  //элемент таблицы A
  //с переменной IB аналогично
  //Если окажется так, что есть несколько равных максимальных элементов, 
  //например 
  //в нулевой, второй и третьей строках, то IA будет содержать цифру 3
  //(третья строка)                                                      
  //Аналогично для переменой IB
 
                                 //+
                                 //+
                                 //+
  
  //Теперь выполняем или не выполняем обмен
  //ЭТО временая пременная для обмена переменных местами
  int temp;
 
  if (IA> IB) {
   //меняем 1 и IA строку местами. НЕобходимо учитывать, что нумерация
   //начинается c 1 (по условию задачи)
   if (!(IA)) {
    for (int i= 0; i< 4; i++) { 
     temp= A[0][i];
     A[0][i]= A[IA][i];
     A[IA][i]= temp;
    }
   }
  } 
  //А тут, как и договаривались, копируем 
  //B в C и меняем строки в матрице C
  //Копирование и перестановку местами можно было бы осуществит за один приём, 
  //(проход) но ну его на фиг 
  else {
   //сперва просто скопируем
   for (int i= 0; i< 4; i++)
    for (int j= 0; j< 4; j++)
     C[i][j]= B[i][j];
 
 
   
   //Так, а теперь поменяем местами нужные строки в матрице C
    for (int i= 0; i< 4; i++) { 
     temp= C[0][i];
     C[0][i]= C[IB][i];
     C[IB][i]= temp;
    }
  }
  
                                 //+
                                 //+
                                 //+
  //Ну и всё, осталось только вывести
  printf ("\n");
  printf ("\n");
  printf ("матрица B\n");
  for (int i= 0; i< 4; i++) {
   for (int j= 0; j< 4; j++) {
    printf ("%*d  ",4, B[i][j]);
   } 
   printf ("\n");
  }    
 
  printf ("\nномер строки в матрице A содержащей максимальный элемент  %d\n", ++IA);
  printf ("номер строки в матрице B содержащей максимальный элемент  %d\n", ++IB);
  printf ("\nматрица C\n");
  for (int i= 0; i< 4; i++) {
   for (int j= 0; j< 4; j++) {
    printf ("%*d  ",4, C[i][j]);
   } 
   printf ("\n");
  }    
 
 printf ("\nнахождение максимального элемента с помощь функции:\n");
 printf ("\nномер строки в матрице A содержащей максимальный элемент  %d\n", max_matr(4, 4, A)+ 1);
 printf ("номер строки в матрице B содержащей максимальный элемент  %d\n", max_matr(4, 4, B)+ 1);
 
 fflush(stdin);
 getchar (); 
 return 0;
}
 Комментарий модератора 
kravam, избавьтесь от привычки прятать код под тег CUT.
 
Текущее время: 04:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru