Вставить в матрицу два столбца из единиц: один после К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-ым. Вот список действий:
- Пользователю предлагается ввести высоту и ширину матрицы.
- Создается массив с заданными размерами.
- Массив заполняется случайными числами, кроме последних двух столбцов.
- Два последних столбца заменяются единицами.
- Код смещает все строки на одну позицию вправо, чтобы освободить место для нового столбца перед последним.
- Последний столбец сохраняется в отдельной переменной.
- Вставляем сохраненный столбец перед последним.
- Выводим обновленную матрицу.