Сдвиг массива влево и вправо на 1 элемент - C (СИ)

Узнай цену своей работы

Формулировка задачи:

неправильно сдвигает влево :с хелп
#define size 100
#include <stdio.h>
#include <math.h>
void vvod_mas(double *,int);
void left( double *, int );
 
void right( double *, int);
 
void main(void)
{ double x[size];
int n;
printf( "vvedite razmer massiva:");
scanf("%d",&n);
vvod_mas(x,n);
right(x,n);
left(x,n);
}
 
void vvod_mas(double *p,int k) {
    for(int i = 0; i<k; ++i) {
        printf("n[%d]=",i);
        scanf("%lf", p++);}
}
void right( double *p, int k){ //функция смещение на 1 вправо
     double temp=p[0];
     for (int i=k-1; i>0;i--) 
     {p[i]=p[i-1];
     p[0]=temp;}
printf("sdvig v prava \n");
for(int i=0;i<k;++i)
{printf("n[%d]=%.2lf \n",i,*(p++));}}
void left( double *p, int k){ //функция смещение на 1 влево
     double temp=p[0];
     for (int i=0; i<k-1;i++) 
     {p[i]=p[i+1];
     p[k-1]=temp;}
printf("sdvig v leva \n");
    for(int i=0;i<k;++i)
    {printf("n[%d]=%.2lf \n",i,*(p++));
    }}

Решение задачи: «Сдвиг массива влево и вправо на 1 элемент»

textual
Листинг программы
void right(double *p, int k){ //функция смещение на 1 вправо
    double temp = p[k-1];
    for (int i = k - 1; i > 0; i--){
        p[i] = p[i - 1];
    }
    p[0] = temp;
    
    printf("sdvig v prava \n");
    for (int i = 0; i<k; ++i)
    {
        printf("n[%d]=%.2lf \n", i, *(p++));
    }
}
void left(double *p, int k){ //функция смещение на 1 влево
    double temp = p[0];
    for (int i = 0; i < k - 1; i++)
    {
        p[i] = p[i + 1];
    }
    p[k - 1] = temp;
    
    printf("sdvig v leva \n");
    for (int i = 0; i<k; ++i)
    {
        printf("n[%d]=%.2lf \n", i, *(p++));
    }
}

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

  1. В функции right при смещении массива элементы сдвигаются вправо на одну позицию, а последний элемент обертывается в начало.
  2. В функции left при смещении массива элементы сдвигаются влево на одну позицию, а первый элемент обертывается в конец.
  3. В обеих функциях используется цикл for, который выполняет перестановку элементов массива.
  4. В функции right используется два вложенных цикла for. Внутренний цикл выполняет перестановку элементов справа налево до тех пор, пока индекс не станет меньше или равным нулю.
  5. Внешний цикл for выполняет итерацию по всем элементам массива, начиная с нулевого индекса и заканчивая индексом k.
  6. В функции left используется два вложенных цикла for. Внутренний цикл выполняет перестановку элементов слева направо до тех пор, пока индекс не станет меньше или равным k-1.
  7. Переменная temp используется для временного хранения значения первого элемента массива в функции left и последнего элемента массива в функции right.
  8. Функция printf используется для вывода исходного массива перед смещением и после смещения.
  9. В обоих функциях используется оператор ++ для инкремента указателя на следующий элемент массива.
  10. В обоих функциях используется оператор *, чтобы получить значение указателя на массив.
  11. Значение k используется как размер массива в обоих функциях.
  12. В обоих функциях используется команда break, чтобы прервать внутренний цикл for, когда индекс становится равным нулю в функции right и k-1 в функции left.
  13. В обоих функциях используется команда continue, чтобы пропустить итерацию внутреннего цикла for, когда индекс становится равным нулю в функции right и k-1 в функции left.
  14. В обоих функциях используется команда return, чтобы завершить выполнение функции после выполнения всех операций.
  15. В обоих функциях используется точка с запятой после каждой строки кода, чтобы указать конец команды.
  16. В обоих функциях используется точка с запятой после каждой строки вывода с помощью функции printf, чтобы указать конец команды вывода.
  17. В обоих функциях используется символ n, чтобы разделить номера элементов массива от их значений при выводе с помощью функции printf.
  18. В обоих функциях используется символ %d, чтобы указать формат вывода целых чисел при выводе номеров элементов массива с помощью функции printf.
  19. В обоих функциях используется символ %.2lf, чтобы указать формат вывода чисел с плавающей точкой с точностью до двух знаков после запятой при выводе значений элементов массива с помощью функции printf.
  20. В обоих функциях используется функция printf для вывода исходного массива перед смещением и после смещения.

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


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

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

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