Вставить в матрицу два столбца из единиц: один после К1-го столбца, второй - перед К1-ым - C (СИ)

Узнай цену своей работы

Формулировка задачи:

дан двумерный массив, вставить в него два столбца из чисел 1: один после К1-го столбца. второй-перед К1-м столбом.

Решение задачи: «Вставить в матрицу два столбца из единиц: один после К1-го столбца, второй - перед К1-ым»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <time.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");
    srand(time(0));                     // Для rand()%N
    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;
                    printf(" %2d", arr[i][j]);
            }
            else{                               // Если не последняя или предпоследняя строка...
                    arr[i][j] = 2 + rand()%9;   // заполняем случайным числом от 2 до 10...
                    printf(" %2d", arr[i][j]);  // выводим случайное число...
            }
        }
        printf("\n");
    }
    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-го столбца, а второй - перед К1-ым. Вот список действий:

  1. Пользователю предлагается ввести высоту и ширину матрицы.
  2. Создается массив с заданными размерами.
  3. Массив заполняется случайными числами, кроме последних двух столбцов.
  4. Два последних столбца заменяются единицами.
  5. Код смещает все строки на одну позицию вправо, чтобы освободить место для нового столбца перед последним.
  6. Последний столбец сохраняется в отдельной переменной.
  7. Вставляем сохраненный столбец перед последним.
  8. Выводим обновленную матрицу.

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


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

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

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