Вставить в матрицу (в файле) два столбца из единиц: один после К1-го столбца, второй - перед К1-ым - C (СИ)
Формулировка задачи:
дан двумерный массив, вставить в него два столбца из чисел 1: один после К1-го столбца. второй-перед К1-м столбом.
Решение задачи: «Вставить в матрицу (в файле) два столбца из единиц: один после К1-го столбца, второй - перед К1-ым»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <locale.h> int main() { setlocale(LC_ALL, "Rus"); printf(" Введите высоту массива: "); int hight; // Высота >> Строки scanf("%d", &hight); printf(" Введите ширину массива: "); int weight; // Ширина >> Столбцы scanf("%d", &weight); int arr[hight][weight]; // Массив printf("\nИдет заполнение массива из файла...\n\n"); FILE * base = fopen("base.txt", "r"); // base - указатель на файл; base.txt - название файла; r - read(читать) if(!base) printf("Файл не найден!\n"); else{ int i, j; // Для перебора строк и столбцов for(i = 0; i < hight; i++){ for(j = 0; j < weight; j++){ if((j == weight-1) || (j == weight-2)) arr[i][j] = 1; else fscanf(base,"%d", &arr[i][j]); // заполняем числом из файла printf(" %2d", arr[i][j]); // выводим число } printf("\n"); } fclose(base); int k = 1; printf("\nk = %d ( 0 - в массиве )\n\n", k); /* После k1 столбца */ for( i = 0; i < hight; i++){ int tmp = arr[i][weight-1]; // Сохраняем последняю ячейку строки for( j = weight -1; j > k; j--){ arr[i][j] = arr[i][j-1]; // Смещаем строку на 1 вправо } arr[i][j] = tmp; // Вставляем сохраненую ячейку } /* Перед k1 столбца */ for( i = 0; i < hight; i++){ // тут так же... int tmp = arr[i][weight-1]; // ... for( j = weight -1; j > k-1; j--){ arr[i][j] = arr[i][j-1]; // ... } arr[i][j] = tmp; // ... } /* Результат */ for( i = 0; i < hight; i ++){ for( j = 0; j < weight; j++) printf(" %2d", arr[i][j]); printf("\n"); } } return 0; }
Объяснение кода листинга программы
- Ввод данных:
- Вводятся высота массива и ширина массива с помощью функции scanf().
- Высота представляет собой количество строк в массиве, а ширина - количество столбцов.
- Массив создается с помощью оператора new в куче, чтобы избежать переполнения стека.
- Чтение данных из файла:
- Открывается файл с помощью функции fopen().
- Если файл не найден, выводится сообщение об ошибке.
- Иначе, используется цикл для чтения каждой ячейки массива из файла.
- Вставка двух столбцов из единиц:
- Первый столбец вставляется после последнего столбца массива.
- Второй столбец вставляется перед первым столбцом массива.
- Для этого используются два вложенных цикла.
- Вывод результата:
- Выводится весь массив с помощью двух вложенных циклов.
- Каждая ячейка массива выводится с помощью функции printf().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д