Сдвиг массива влево и вправо на 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++)); } }
Объяснение кода листинга программы
- В функции
right
при смещении массива элементы сдвигаются вправо на одну позицию, а последний элемент обертывается в начало. - В функции
left
при смещении массива элементы сдвигаются влево на одну позицию, а первый элемент обертывается в конец. - В обеих функциях используется цикл
for
, который выполняет перестановку элементов массива. - В функции
right
используется два вложенных циклаfor
. Внутренний цикл выполняет перестановку элементов справа налево до тех пор, пока индекс не станет меньше или равным нулю. - Внешний цикл
for
выполняет итерацию по всем элементам массива, начиная с нулевого индекса и заканчивая индексомk
. - В функции
left
используется два вложенных циклаfor
. Внутренний цикл выполняет перестановку элементов слева направо до тех пор, пока индекс не станет меньше или равнымk-1
. - Переменная
temp
используется для временного хранения значения первого элемента массива в функцииleft
и последнего элемента массива в функцииright
. - Функция
printf
используется для вывода исходного массива перед смещением и после смещения. - В обоих функциях используется оператор
++
для инкремента указателя на следующий элемент массива. - В обоих функциях используется оператор
*
, чтобы получить значение указателя на массив. - Значение
k
используется как размер массива в обоих функциях. - В обоих функциях используется команда
break
, чтобы прервать внутренний циклfor
, когда индекс становится равным нулю в функцииright
иk-1
в функцииleft
. - В обоих функциях используется команда
continue
, чтобы пропустить итерацию внутреннего циклаfor
, когда индекс становится равным нулю в функцииright
иk-1
в функцииleft
. - В обоих функциях используется команда
return
, чтобы завершить выполнение функции после выполнения всех операций. - В обоих функциях используется точка с запятой после каждой строки кода, чтобы указать конец команды.
- В обоих функциях используется точка с запятой после каждой строки вывода с помощью функции
printf
, чтобы указать конец команды вывода. - В обоих функциях используется символ
n
, чтобы разделить номера элементов массива от их значений при выводе с помощью функцииprintf
. - В обоих функциях используется символ
%d
, чтобы указать формат вывода целых чисел при выводе номеров элементов массива с помощью функцииprintf
. - В обоих функциях используется символ
%.2lf
, чтобы указать формат вывода чисел с плавающей точкой с точностью до двух знаков после запятой при выводе значений элементов массива с помощью функцииprintf
. - В обоих функциях используется функция
printf
для вывода исходного массива перед смещением и после смещения.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д