include stdio include stdlib include locale int intInp int tmp scanf t

 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
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int intInp() {
int tmp;
scanf("%d", &tmp);
return tmp;
}
void create(int** q, int k, int l)
{
int i;
q = (int**)malloc(k * sizeof(int*));
for (i = 0; i < k; ++i) {
q[i] = (int*)malloc(l * sizeof(int));
}
}
void vvvod (int** q, int k, int l, int x)
{
int i, j;
for (i = 0; i < k; i++) {
printf("Строка %d\n", i);
for (j = 0; j < l; j++) {
printf("\tСтолбец %d: ", j);
while (scanf("%d", &x) != 1 || x < -1 || x > 1) {
printf("Ошибка ввода\n");
while (getchar() != '\n') {}
}
q[i][j] = x;
}
}
}
void vivod(int** q, int k, int l, int x)
{
int i, j;
for (i = 0; i < k; ++i) {
for (j = 0; j < l; ++j) {
printf("\t%d", q[i][j]);
}
printf("\n\n\n");
}
}
int main() {
setlocale(LC_CTYPE, "rus");
int x, i, y, z, j, k, l, tmp, cntr_r = 0, cntr_c = 0, ** q;
x = y = q = 0;
printf("Введите количество строк ");
k = intInp();
printf("Введите количество столбцов ");
l = intInp();
printf("Введите количество строк в 0 подматрице ");
scanf("%d", &y);
/*
while (scanf("%d", &y) != (y <= k && y <= l && y != 0)) {
printf("Ошибка ввода\n");
while (getchar() != '\n') {}
}
*/
// ф-ия 1 для созданние массива
create(q, k, l);
// ф-ия 2 для ввода массива
vvvod(q, k, l, x);
// ф-ия 3 для вывода массива
vivod(q, k, l, x);
return 0;
for (i = 0; i < k; i++)
free(q[i]);
free(q);
}