
100 БАЛЛОВ!!! Язык С(не С++!!!) Написать программу, которая в двумерном массиве типа int
размером N строк и M столбцов циклически сдвигает элементы каждой строки вправо на число позиций, равное индексу этой строки.

Ответы на вопрос

Ответ:
include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
const unsigned M=5;
void init_array(int A[][M], unsigned n);
void print_of_array(int A[][M], unsigned n);
void swap (int *pa, int *pb);
void changing_of_array(int A[][M], unsigned n);
int main(){
const unsigned N=5;
int A[N][M];
init_array(A,N);
print_of_array(A,N);
printf("\n");
printf("\n");
changing_of_array(A,N);
print_of_array(A,N);
getchar();
return 0;
}
void init_array(int A[][M], unsigned n){
for (unsigned i=0; i<n; i++)
for (unsigned j=0; j<M;j++)
A[i][j]=rand()%100;
}
void print_of_array(int A[][M], unsigned n){
for (unsigned i=0; i<n; i++){
for (unsigned j=0; j<M;j++)
printf("%5d", A[i][j]);
printf("\n");}
}
void swap(int *pa, int *pb){
int temp=*pa;
*pa=*pb;
*pb=temp;
return;
}
void changing_of_array(int A[][M], unsigned n) {
unsigned l=1;
for (unsigned i=1; i<n; i++) {
for (unsigned j=M-1; j+1>0; j--){
if ((j-l)<0) break;
swap(&A[i][j],&A[i][j-l]); }
l++;
}
}
Объяснение:



Конечно, я могу помочь вам написать программу на языке программирования C, которая выполняет циклический сдвиг элементов каждой строки вправо на число позиций, равное индексу этой строки. Вот пример кода:
```c
#include
// Функция для циклического сдвига элементов вправо в массиве void cyclicShift(int array[], int size, int shift) { int temp[size]; // Выполняем сдвиг for (int i = 0; i < size; i++) { temp[(i + shift) % size] = array[i]; } // Копируем результат обратно в исходный массив for (int i = 0; i < size; i++) { array[i] = temp[i]; } }
// Функция для циклического сдвига элементов каждой строки в матрице void cyclicShiftMatrix(int matrix[][M], int N, int M) { // Проходим по каждой строке матрицы for (int i = 0; i < N; i++) { // Вызываем функцию циклического сдвига для каждой строки cyclicShift(matrix[i], M, i); } }
// Функция для вывода двумерной матрицы void printMatrix(int matrix[][M], int N, int M) { for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { printf("%d ", matrix[i][j]); } printf("\n"); } }
int main() { // Задаем размеры матрицы int N, M; printf("Введите количество строк (N): "); scanf("%d", &N); printf("Введите количество столбцов (M): "); scanf("%d", &M);
// Создаем двумерный массив int matrix[N][M];
// Вводим элементы матрицы printf("Введите элементы матрицы:\n"); for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { scanf("%d", &matrix[i][j]); } }
// Вызываем функцию циклического сдвига cyclicShiftMatrix(matrix, N, M);
// Выводим результат printf("Результат циклического сдвига:\n"); printMatrix(matrix, N, M);
return 0; } ```
Этот код включает три функции: `cyclicShift`, `cyclicShiftMatrix`, и `printMatrix`. Функция `cyclicShift` выполняет циклический сдвиг элементов одномерного массива. Функция `cyclicShiftMatrix` применяет `cyclicShift` к каждой строке двумерной матрицы. Функция `printMatrix` используется для вывода результатов. Вы можете скомпилировать и выполнить этот код на своем компьютере.


Похожие вопросы


Топ вопросов за вчера в категории Информатика








Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili