12 мая 2015 г.

Дан массив случайных чисел в диапазоне от -20 до +20. Необходимо найти позиции крайних отрицательных элементов (самого левого отрицательного элемента и самого правого отрицательного элемента) и отсортировать элементы, находящиеся между ними.

void init(int A[], int size);
void out(int A[], int size);
void sort(int A[],int size);

void main()
{
setlocale(LC_ALL, "Russian");
const int s=20;
int A[s];
int a;
do
{
cout << "Эта программа сортирует массив между позициями крайних отрицательных элементов.\n";
init(A, s);
out(A, s);
sort(A, s);
out(A, s);
cout << "\nЕсли хотите продолжить, нажмите 1\n";
cin >> a;
} while (a == 1);
}

void init(int A[], int size)
{
srand(time(NULL));
for (int i = 0; i < size; i++)
A[i] = rand() % 40-20;
}

void out(int A[], int size)
{
cout << "\n";
for (int i = 0; i < size; i++)
cout << A[i] << " ";
cout << "\n";
}

void sort(int A[],int size)
{
int x, i, j, tmp_i, tmp_j;
for(int a=0;a<size;a++)//находим индекс первого отрицательного элемента
{
if(A[a]<0)
{
tmp_i=a;
break;
}
}
for(int a=size-1;a>tmp_i;a--)//находим последнего отрицательного элемента
{
if(A[a]<0)
{
tmp_j=a;
break;
}
}
for(i=tmp_i;i<=tmp_j;i++)//сама сортировка
{
x=A[i];
for (j=i-1;j>=tmp_i&&A[j]>x;j--)
A[j+1]=A[j];
A[j+1] = x;
}
}

Комментариев нет:

Отправить комментарий