Страница 1 из 1

Массив и сортировка методом прямого обмена.

Добавлено: 13 дек 2009, 13:06
Templer
Собственно прошу помощи в решении задачи ибо сессия близиться а лаба нездана(я чайник по с++).
Условие:Даны натуральные числа n , p , q , a1 , a2 , …, an , причем n ≥ q > p ≥1.
Найти количество членов последовательности a1 , a2 , …, aq удовлетво-
ряющих условию ai−1 ≤ ai ≥ ai+1, где i = 2, 3,..., (q −1), а также значение наи-
большего из членов последовательности ap , a(p+1), …, an , удовлетворяющих
условию ai−1 ≥ ai ≤ ai+1, где i = (p +1), (p + 2),K, (n −1).
Упорядочить члены последовательности ap , ap+1, …, aq по возрастанию,
используя алгоритм сортировки методом прямого обмена.


Моя программа(конечно же неправильная):
#include <conio.h>
#include <iostream.h>
main()
{
int m,n,q,i,j,imax,p,*a,k,*temp_a,ibeg,iend,temp;
clrscr ();
cout<<"Введите количество элементов массива: ", cin>>n;
a=new int[n];
cout<<"Введите "<<n<<" элемента(ов) массива: ";
for(i=0;i<n;i++) cin>>a;
cout<<"Исходный массив: "<<endl;
for(i=0;i<n;i++) cout<<"a["<<i<<"]="<<a<<" ";
cout<<endl;
cout<<"Введите q: ", cin>>q;
cout<<"Введите p: ", cin>>p;
for(int=1;k=0;i<q-1;i++){
if (a[i-1]>=a)&&(a[i+1]=<a[i+1]) K++;}
for(imax=0,i=1;i<p;i++){
if(a>a[imax]) imax=i;
}
cout<<"Максимальный элемент: a["<<imax<<"]="<<a[imax]<<endl;
temp_a=a;
m=n+ibeg-iend;
a=new int[m];
for(i=0;j=0;i<ibeg;i++,j++) a[j]=temp_a;
a[j++]=s_pos;
for(i=iend+1;i<n;i++,j++) a[j]=temp_a;
delete []temp_a;
for(i=m-1;i;i--)
for(j=0;j<i;j++)
if(a[j]>a[j+1])
temp=a[j],a[j]=a[j+1],a[j+1]=temp;
cout<<"Otcorturovanui macciv: "<<endl;
for(i=0;i<m;i++) cout<<"a['<<i<<"]="<<a<<" ";
cout<<endl;
cout<<"Press me";
getch();
delete []a;
return 0;
}


Прошу подогнать под условие.... :confused:
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Ну помогите ктонибудь!!!