Одномерный массив. с++ дан вектор x = {x0, . xn-1}, m и k заданные целые числа. осуществить циклический сдвиг компонент этого вектора а) влево на m позиций, т. е. получить вектор {xm+1, xm+2, . xn-1, x0, . xm}, б) в право на k позиций, т. е. получить вектор{xn-k+1, xn-k+2, . xn-1, x0, . xn-k}.
//а
#include <iostream>
using namespace std;
const int n=10;
int main(){
int ar[n];
int arsub[n];
int m=0;
cout<<"Enter m:";
cin>>m;
cout<<"Enter array:"<<endl;
for(int i=0;i<n;i++)
cin>>ar[i];
for(int i=0;i<m;i++)
arsub[i]=ar[i];
for(int i=0;i<n-m;i++)
ar[i]=ar[i+m];
for(int i=0;i<m;i++)
ar[i+(n-m)]=arsub[i];
cout<<"Final array"<<endl;
for(int i=0;i<n;i++)
cout<<ar[i]<<' ';
cin.get();
cin.get();
return 0;
}
//б
#include <iostream>
using namespace std;
const int n=10;
int main(){
int ar[n];
int arsub[n];
int k,k1=0;
cout<<"Enter k:";
cin>>k;
cout<<"Enter array:"<<endl;
for(int i=0;i<n;i++)
cin>>ar[i];
for(int i=n-k;i<n;i++){
arsub[k1]=ar[i];k1++;}
for(int i=n;i>=k;i--)
ar[i]=ar[i-k];
for(int i=0;i<k;i++)
ar[i]=arsub[i];
cout<<"Final array"<<endl;
for(int i=0;i<n;i++)
cout<<ar[i]<<' ';
cin.get();
cin.get();
return 0;
}