diff --git a/lab15 b/lab15
new file mode 100644
index 0000000..cc87024
--- /dev/null
+++ b/lab15
@@ -0,0 +1,236 @@
+#include <stdio.h>
+#include <Windows.h>
+#define _CRT_SECURE_NO_WARNINGS
+#define NUM_ELEMENTS 100
+
+int arr[NUM_ELEMENTS][NUM_ELEMENTS];
+int n = 3, m = 4;
+
+void print_arr() {
+	printf("!!!! print() !!!!\n");
+	for (int i = 0; i < n; i++) {
+		for (int j = 0; j < m; j++) {
+			printf("%3d ", arr[i][j]);
+		}
+		printf("\n");
+	}
+	
+}
+void fillIx10() {
+	printf("!!!! fillIx10() !!!!\n");
+	for (int i = 0; i < n; i++) {
+		for (int j = 0; j < m; j++) {
+			arr[i][j] = i * 10 + j;
+		}
+	}
+}
+void fillZero() {
+	printf("!!!! fillZero() !!!!\n");
+	for (int i = 0; i < n; i++) {
+		for (int j = 0; j < m; j++) {
+			arr[i][j] = 0;
+		}
+	}
+}
+void randFill0_9() {
+	printf("!!!! randFill0_9() !!!!\n");
+	for (int i = 0; i < n; i++) {
+		for (int j = 0; j < m; j++) {
+			arr[i][j] = rand() % 10;
+		}
+	}
+}
+
+void deleteRow(int delRow) {
+	printf("!!!! deleteRow(%d) !!!!\n", delRow);
+	for (int i = delRow; i < n - 1; i++) {
+		for (int j = 0; j < m; j++) {
+			arr[i][j] = arr[i + 1][j];
+		}
+	}
+	n--;
+}
+void save() {
+	FILE* fout = fopen("C:\\temp\\arr1.txt", "wt");
+	if (fout == NULL) {
+		printf("Выходной файл не создался");
+		return;
+	}
+
+	fprintf(fout, "%d ", n);
+	fprintf(fout, "%d\n", m);
+	for (int i = 0; i < n; i++) {
+		for (int j = 0; j < m; j++) {
+			fprintf(fout, "%d ", arr[i][j]);
+		}
+		fprintf(fout, "\n");
+	}
+
+	fclose(fout);
+}
+void load() {
+
+	FILE* fin = fopen("C:\\temp\\arr1.txt", "rt");
+	if (fin == NULL) {
+		printf("Входной файл не найден");
+		return;
+	}
+
+	fscanf_s(fin, "%d", &n);
+	fscanf_s(fin, "%d", &m);
+
+	for (int i = 0; i < n; i++) {
+		for (int j = 0; j < m; j++) {
+			fscanf_s(fin, "%d", &arr[i][j]);
+		}
+	}
+
+	fclose(fin);
+}
+
+void duplicateColumn(int colIndex) {
+	printf("!!!! duplicateColumn() !!!!\n");
+	for (int i = 0; i < n; i++) {
+		arr[i][m] = arr[i][colIndex];
+	}
+	m++;
+}
+
+
+void inputA() {
+	printf("Введите количество строк (n): ");
+	scanf_s("%d", &n);
+
+	printf("Введите количество столбцов (m): ");
+	scanf_s("%d", &m);
+	printf("Введите элементы массива:\n");
+	for (int i = 0; i < n; i++) {
+		for (int j = 0; j < m; j++) {
+			printf("arr[%d][%d]: ", i, j);
+			scanf_s("%d", &arr[i][j]);
+		}
+	}
+}
+void oddnumx10() {
+	printf("!!!! oddnumx10 !!!!\n");
+
+	for (int i = 0; i < n; i++) {
+		for (int j = 0; j < m; j++) {
+			if (arr[i][j] % 2 != 0) { 
+				arr[i][j] *= 10;
+			}
+		}
+	}
+}
+void multiples10() {
+	printf("!!!! multiples10 !!!!\n");
+	for (int i = 0; i < n; i++) {
+		for (int j = 0; j < m; j++) {
+			if (arr[i][j] % 10 == 0) {
+				arr[i][j] /= 10;
+			}
+		}
+	}
+}
+void func_11() {
+	int min, max, min_i, min_j;
+	min = arr[0][0]; max = arr[0][0];
+	min_i = 0; min_j = 0;
+
+	for (int i = 0; i < n; i++) {
+		for (int j = 0; j < m; j++) {
+			if (arr[i][j] < min) {
+				min = arr[i][j];
+				min_i = i;
+				min_j = j;
+			}
+			if (arr[i][j] > max) {
+				max = arr[i][j];
+			}
+		}
+	}
+
+	int mean;
+	mean = (max + min) / 2;
+
+	for (int i = 0; i < min_i; i++) {
+		for (int j = 0; j < min_j; j++) {
+			arr[i][j] = mean;
+		}
+	}
+}
+void menu1() {
+	printf("\n");
+	printf("------------------------------\n");
+	printf("Выберите нужную вам операцию:\n");
+	printf("1: Заполнить значениями i * 10 + j\n");
+	printf("2: заполнить нулями\n");
+	printf("3: заполнить случайными значениями\n");
+	printf("4: все нечетные увеличить в 10 раз\n");
+	printf("5: все кратные 10 уменьшить в 10 раз\n");
+	printf("6: введите массив с клавиатуры\n");
+	printf("7: сохранить массив в файле\n");
+	printf("8: загрузить массив из готового файла\n");
+	printf("9: удалить заданную строку из массива\n");
+	printf("10: продублировать заданный столбец массива\n");
+	printf("11:все элементы, стоящие выше и левее min элемента\n");
+	printf("заменить на среднее арифметическое min и max элементов\n");
+	printf("\n");
+	printf("-1: Выйти из программы\n");
+	printf("Выбранная операция >>>>>> ");
+}
+void main() {
+	SetConsoleCP(1251);
+	SetConsoleOutputCP(1251);
+	int item;
+	do {
+		print_arr();
+		menu1();
+		scanf_s("%d", &item);
+		printf("\n");
+		switch (item) {
+		case 9: {
+			int num;
+			printf("Номер строки, которую нужно удалить: ");
+			scanf_s("%d", &num);
+			deleteRow(num);
+		}
+		break;
+		case 7:
+			save();
+			break;
+		case 10: {
+			printf("Индекс столбца, чтобы его продублировать: ");
+			int c;
+			scanf_s("%d", &c);
+			duplicateColumn(c);
+		}
+		break;
+		case 1:
+			fillIx10();
+			break;
+		case 2:
+			fillZero();
+			break;
+		case 3:
+			randFill0_9();
+			break;
+		case 6:
+			inputA();
+			break;
+		case 5:
+			multiples10();
+			break;
+		case 4:
+			oddnumx10();
+			break;
+		case 8:
+			load();
+			break;
+		case 11:
+			func_11();
+			break;
+		}
+		 
+	} while (item != -1);
+}
\ No newline at end of file