Инвертиране елементи на едномерен масив
kat51 трудност:

видян:
7569
Задача: Даден е цялочислен масив А(а1,а2,а3,...,аk,аk+1,...,аn-1,an) с n елемента . Съставете програма , която по дадена стойност на k (1<k<n) размества елементите на масива А във вида: (аk+1,...,аn-1,an, а1,а2,а3,...,аk ) без да се използва допълнителен масив. Пример: Нека А(1,2,3,4,5,6,7,8,9) и к=3Инвертира се масив А от първи до трети елемент : 3,2,1Инвертира се масив А от четвърти до края на масива: 9,8,7,6,5,4Новополучения масив е : 3,2,1,9,8,7,6,5,4Инвертира се новополучения масив : 4,5,6,7,8,9,1,2,3Алгоритъм:
- Инвертира се масивът (а1,а2,а3,...,аk )
- Инвертира се масивът (аk+1,...,аn-1,an )
- Инвертира се масивът (а1,а2,а3,...,an )
Използвани функции: readarr – въвеждане на елементите на масив Аwritearr - извеждане елементите на масив Аinvertirane – обръщане елементите на масив А от [K,L] където K- долна граница на разглеждания интервал ; L – горна граница на разглеждания интервал ;
#include<iostream.h>
void readarr(int a[],int);
void invertirane(int a[],int,int,int);
void writearr(int a[],int);
int main(){int a[100];int n;cout<<"broi elementi na masiv a : ";cin>>n;readarr(a,n);int k;cout<<"ot koi element se inverti : ";cin>>k;invertirane(a,n,1,k);invertirane(a,n,k+1,n);invertirane(a,n,1,n);writearr(a,n);
cout<<endl;
return 0;
}
void readarr(int a[],int n)
{
for(int i=1;i<=n;i++)
{
cout<<"a["<<i<<"] = ";
cin>>a[i];
}
}
void writearr(int a[],int n)
{
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
cout<<endl;
}void invertirane(int a[],int n,int k,int l){ int t=(k+l)/2;
for(int i=k;i<=t;i++)
{
int x;
x=a[i];
a[i]=a[l-i+k];
a[l-i+k]=x;
}
}