From 9f6785c4971e2950e8ecc45ba6a2baa27ba2b51c Mon Sep 17 00:00:00 2001 From: misarablewq Date: Thu, 31 Oct 2024 00:12:15 +0400 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20lab15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lab15 | 236 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 236 insertions(+) create mode 100644 lab15 diff --git a/lab15 b/lab15 new file mode 100644 index 0000000..cc87024 --- /dev/null +++ b/lab15 @@ -0,0 +1,236 @@ +#include +#include +#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