#define _CRT_SECURE_NO_WARNINGS #include #include #define MAX_N 8 #define MAX_M 10 int arr[MAX_N][MAX_M] = { { 0, 1, 222, 3}, {10, 11, 12, 13}, {20, 21, 22, 23} }; int n = 3; int m = 4; void print(); void fillIx10(); void fillZero(); void randFill0_9(); void oddsX10(); void oddsx1(); void printElements(); void deleteRow(int delRow); void save(); void load(); void save(); void load(); void addColumn(int addColumn0); void main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); int item; do { printf("\n"); printf("------------------------------\n"); printf("Содержимое массива:"); 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("\n"); printf("-1: Выйти из программы\n"); printf("Выбранная операция >>>>>> "); scanf_s("%d", &item); switch (item) { case 1: fillIx10(); print(); break; case 2: fillZero(); print(); break; case 3: randFill0_9(); print(); break; case 4: oddsX10(); print(); break; case 5: oddsx1(); print(); break; case 6: printElements(); print(); break; case 7: { int num; printf("Номер строки, которую нужно удалить= "); scanf_s("%d", &num); deleteRow(num); print(); } break; case 8: save(); print(); break; case 9: load(); print(); break; case 10: { print(); int num; printf("Номер столбца, который нужно продублировать= "); scanf_s("%d", &num); addColumn(num); print(); } break; } } while (item != 0); } void print() { printf("!!!! Массив !!!!\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 oddsX10() { printf("!!!! oddsX10() !!!!\n"); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (arr[i][j] % 2 != 0) { arr[i][j] = arr[i][j] * 10; } } } } void oddsx1() { printf("!!!! oddsX1() !!!!\n"); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (arr[i][j] % 10 == 0) { arr[i][j] = arr[i][j] / 10; } } } } void printElements() { printf("n = "); scanf_s("%d", &n); printf("m = "); scanf_s("%d", &m); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { scanf_s(" %d", &arr[i][j]); } } printf("\n"); } 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("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("arr1.txt", "rt"); if (fin == NULL) { printf("Входной файл не найден"); return; } fscanf(fin, "%d", &n); fscanf(fin, "%d", &m); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { fscanf(fin, "%d", &arr[i][j]); } } fclose(fin); } void addColumn(int addColumn0) { printf("!!!! addColumn0(%d) !!!!\n", addColumn0); for (int i = 0; i < n; i++) { for (int j = addColumn0; j < m + 1; j++) { arr[i][j] = arr[i][j - 1]; } } m++; }