forked from annapirova/mp1-2024
-
Notifications
You must be signed in to change notification settings - Fork 0
/
2D arrays tasks.c
156 lines (118 loc) · 3.16 KB
/
2D arrays tasks.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
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include "time.h"
#include "memory.h"
#include "locale.h"
#pragma warning(disable: 4996)
//Задание №22
void amountplaces(int **A, int m, int n) {
int indmax = 0, maxl = 0, maxg = 0, countf = 0, l = m;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (A[i][j] == 0) {
countf++;
if (countf > maxl) {
maxl = countf;
}
}
else {
countf = 0;
}
}
countf = 0;
if (maxl > maxg) {
maxg = maxl;
indmax = i;
}
maxl = 0;
}
printf("Вагон с максимальным количеством идущих подряд свободных мест: %d", indmax+1);
printf("\nСумма мест: %d", maxg);
}
int main() {
int m = 0, n = 0;
setlocale(LC_ALL, "Russian");
srand(time(NULL));
printf("Введите количество вагонов и мест в них, соответсвенно: ");
scanf("%d %d", &n, &m);
int** A = (int**)malloc(sizeof(int*) * n);
for (int i = 0; i < n; i++) {
A[i] = (int*)malloc(sizeof(int) * m);
}
printf("Рандомная ситуация по посадке вагонов, где 0 - свободное место, 1 - занятое место: \n\n");
for (int i = 0; i < n; i++) {
printf("%d вагон: ", i+1);
for (int j = 0; j < m; j++) {
A[i][j] = (double)rand() / RAND_MAX * 2;
printf("%d ", A[i][j]);
}
printf("\n");
}
printf("\n\nИтог: \n\n");
amountplaces(A, m, n);
for (int i = 0; i < m; i++) {
free(A[i]);
}
free(A);
return 0;
}
//Задание №23
int main2()
{
int m = 0, n = 0, x = 0, minA = 0, min1 = 0, max1 = 0, ind = 0;
setlocale(LC_ALL, "Russian");
srand(time(NULL));
printf("Задайте размерность квадратной матрицы, в которой: n строк х n столбцов: ");
scanf("%d", &n);
printf("Обозначьте диапазон генерируемых значений: ");
scanf("%d %d", &min1, &max1);
m = n;
minA = max1 + 1;
printf("\n\n");
int** A = (int**)malloc(sizeof(int*) * n);
for (int i = 0; i < n; i++) {
A[i] = (int*)malloc(sizeof(int) * m);
}
printf("Получившаяся матрица: \n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
A[i][j] = min1 + (double)rand() / RAND_MAX * (max1 - min1);
printf("%d ", A[i][j]);
}
printf("\n");
}
//Нахождение мин. элемента по главной диагонали
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if ((i == j) && (A[i][j] < minA)) {
minA = A[i][j];
ind = i;
printf("%d %d ", minA, ind);
}
}
}
//Зеркальное отображение строки с мин. элементом
for (int i = 0; i < n; i++) {
for (int j = 0; j < (m / 2); j++) {
if (i == ind) {
x = A[i][(m-1) - j];
A[i][(m-1) - j] = A[i][j];
A[i][j] = x;
}
}
printf("\n");
}
printf("\n\nПолучившаяся зеркальная матрица!\n\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
printf("%d ", A[i][j]);
}
printf("\n");
}
for (int i = 0; i < n; i++) {
free(A[i]);
}
free(A);
return 0;
}