Получить новые массивы путем сдвига элементов в массивах на два разряда вправо - 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;
}

Объяснение кода листинга программы

  1. Объявлены массивы A и B, а также массивы C1 и C2.
  2. Вызваны функции shl для сдвига элементов массивов A и B на два разряда вправо в массивы C1 и C2 соответственно.
  3. Выведены элементы массива A.
  4. Выведены элементы массива C1.
  5. Выведены элементы массива B.
  6. Выведены элементы массива C2.
  7. В функции shl происходит сдвиг элементов массива на два разряда вправо с использованием циклов while и индексации.
  8. При сдвиге элементов, в освободившиеся ячейки записывается ноль.
  9. В функции main, массивы C1 и C2 объявлены как массивы длиной 2, что позволяет хранить в них результаты сдвига элементов массивов A и B.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы