Получить новые массивы путем сдвига элементов в массивах на два разряда вправо - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д