Вставить в матрицу (в файле) два столбца из единиц: один после К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;
}

Объяснение кода листинга программы

  1. Ввод данных:
    • Вводятся высота массива и ширина массива с помощью функции scanf().
    • Высота представляет собой количество строк в массиве, а ширина - количество столбцов.
    • Массив создается с помощью оператора new в куче, чтобы избежать переполнения стека.
  2. Чтение данных из файла:
    • Открывается файл с помощью функции fopen().
    • Если файл не найден, выводится сообщение об ошибке.
    • Иначе, используется цикл для чтения каждой ячейки массива из файла.
  3. Вставка двух столбцов из единиц:
    • Первый столбец вставляется после последнего столбца массива.
    • Второй столбец вставляется перед первым столбцом массива.
    • Для этого используются два вложенных цикла.
  4. Вывод результата:
    • Выводится весь массив с помощью двух вложенных циклов.
    • Каждая ячейка массива выводится с помощью функции printf().

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5
Похожие ответы