Получить новые массивы путем сдвига элементов в массивах на два разряда вправо - C (СИ)
Формулировка задачи:
даны массивы A[1..5], B[1..6]. Получит новые массивы путем сдвига элементов в массивах на два разряда вправо, освободившиеся слева элементы обнулить.Сдвиг элементов в массивах оформить подпрограммой, из подпрограммы вернуть выпавшие справа разряды.
Код недоделан и с ошибками, прошу помощи исправить и доделать.
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <math.h> int sdvig(int d[], int n, int k, int d1[]) { int i, j; for(j=0; j<k; j++) { d1[0]=0; for(i=0; i<n-1; i++) d1[i+1]=d[i]; for(i=0; i<n; i++) d[i]=d1[i]; } return 0; } int main() { int q, s=2; int A[5]={56,45,21,35,98}; int B[6]={3,8,9,24,16,28}; printf("Pervonachalnye massivy:\n"); printf("Massiv A: "); for(q=0; q<5; q++) printf("%5d",A[q]); printf("\n"); printf("Massiv B: "); for(q=0; q<6; q++) printf("%5d",B[q]); printf("\n"); printf("Sdvinutye massivy: \n"); printf("Massiv B: "); sdvig(A,s,q,a1); }
Решение задачи: «Получить новые массивы путем сдвига элементов в массивах на два разряда вправо»
textual
Листинг программы
#define N1 5 #define N2 6 void shl(int* pn, int n, int pos, int* pv); int main() { int A[N1] = { 3, 4, 1, 2, 9 }; int B[N2] = { 6, 8, 3, 5, 1, 7 }; int C1[2],C2[2]; shl(A,N1,2,C1); shl(B,N2,2,C2); for (int z1 = 0; z1 < N1; z1++) printf("%d ",A[z1]); printf("\n"); for (int q1 = 0; q1 < 2; q1++) printf("%d ",C1[q1]); printf("\n"); for (int z2 = 0; z2 < N2; z2++) printf("%d ",B[z2]); printf("\n"); for (int q2 = 0; q2 < 2; q2++) printf("%d ",C2[q2]); printf("\n"); return 0; } void shl(int* pn, int n, int pos, int* pv) { int k = 0; while (--pos >= 0) { int i = n-1; pv[k++] = pn[i]; while (i >= 1) pn[i--] = pn[i-1]; } int q = 0; while (q < k) pn[q++] = 0; }
Объяснение кода листинга программы
- Объявлены массивы A и B, а также массивы C1 и C2.
- Вызваны функции shl для сдвига элементов массивов A и B на два разряда вправо в массивы C1 и C2 соответственно.
- Выведены элементы массива A.
- Выведены элементы массива C1.
- Выведены элементы массива B.
- Выведены элементы массива C2.
- В функции shl происходит сдвиг элементов массива на два разряда вправо с использованием циклов while и индексации.
- При сдвиге элементов, в освободившиеся ячейки записывается ноль.
- В функции main, массивы C1 и C2 объявлены как массивы длиной 2, что позволяет хранить в них результаты сдвига элементов массивов A и B.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д