Читайте также:
|
|
Для закрепления пройденного материала мы выполним решение задач на двумерные массивы. Первая задача будет такая:
1. Нужно создать двумерный массив, размером 5 х 7 (пять строк, семь столбцов). Заполнить его случайно целыми числами, в районе от 0 до 30. Вывести получившийся массив на экран. Затем нужно отсортировать строки массива так, чтобы первой шла строка, сумма элементов которой была меньше, чем остальных. И так далее, по возрастанию. Для сортировки удобно использовать, алгоритм сортировки отбором. Вот только в этом случае этот алгоритм сортировки уже будет сортировать не отдельные числа одномерного массива, а строки двумерного массива, исходя из суммы ее элементов.
Попытайтесь сами реализовать программу, выполняющую эту задачу. В случае необходимости можете посмотреть мой вариант решения этой задачи, который привожу ниже.
01.//Двумерные массивы - решение задач
02.
03.#include <iostream>
04.#include <iomanip>
05.#include <stdlib.h>
06.#include <time.h>
07.
08.using namespace std;
09.
10.void initMatrix(int[][7], const int, const int);
11.void replaceColumn(int[][7], const int, int, int);
12.void printMatrix(int[][7], const int, const int);
13.
14.int main()
15.{
16. const int column = 5, row = 7;
17. int matrix[column][row];
18. int counter, result, columnMin;
19.
20. srand(time(NULL));
21.
22. //инициализируем двумерный массив случайными величинами,
23. //затем печатаем его
24. initMatrix(matrix, column, row);
25. cout << "\nNoSorted array" << endl << endl;
26. printMatrix(matrix, column, row);
27.
28. //делаем проходы столько раз, сколько строк в массиве
29. for(int N = 0; N < column - 1; N++)
30. {
31. result = row * 30;
32.
33. //анализируем массив и находим строку,
34. //сумма элементов которой минимальная
35. for(int i = N; i < column; i++)
36. {
37. //обнуляем счетчик суммы элементов строки
38. counter = 0;
39.
40. //проходим по элементам данной строки
41. //и считаем сумму
42. for(int j = 0; j < row; j++)
43. counter += matrix[i][j];
44.
45. //result в итоге будет хранить значение минимальной суммы
46. //columnMin будет хранить значение строки, в которой
47. //была найдена минимальная сумма
48. if(result > counter)
49. {
50. result = counter;
51. columnMin = i;
52. }
53. }
54.
55. replaceColumn(matrix, row, N, columnMin);
56. }
57.
58. //печатаем отсортированный массив
59. cout << "\nSorted array" << endl << endl;
60. printMatrix(matrix, column, row);
61.
62. return 0;
63.}
64.
65.//инициализация двумерного массива
66.void initMatrix(int matrix[][7], const int column, const int row)
67.{
68. for(int i = 0; i < column; i++)
69. for(int j = 0; j < row; j++)
70. matrix[i][j] = rand() % 30;
71.}
72.
73.//меняем строки массива местами
74.void replaceColumn(int matrix[][7], const int row, int N, int columnMin)
75.{
76. int buffer[row];
77.
78. for(int j = 0; j < row; j++)
79. {
80. buffer[j] = matrix[columnMin][j];
81. matrix[columnMin][j] = matrix[N][j];
82. matrix[N][j] = buffer[j];
83. }
84.}
85.
86.//печать двумерного массива
87.void printMatrix(int matrix[][7], const int column, const int row)
88.{
89. for(int i = 0; i < column; i++)
90. {
91. for(int j = 0; j < row; j++)
92. cout << setw(3) << matrix[i][j];
93.
94. cout << endl;
95. }
96.}
Результат работы программы:
Дата добавления: 2015-08-18; просмотров: 44 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Говорим о двумерных массивах | | | Сущ-ть и з бу, его нормат-прав регулир. Осно направления реформ-ния бу в РФ |