Вставить в матрицу (в файле) два столбца из единиц: один после К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().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д