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
 
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			