Другие языки программирования и технологии

Поменять местами первый и последний отрицательные элементы массива B (18). (Язык Си) (Язык Си)

// _71257791
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <locale.h>
#include <windows.h>
#define N 20
void theend();
void main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
srand((unsigned) time(NULL));
int a[N];
int iFirst = -1, iLast = -2, temp, flag = 1;
printf("\n Исходный массив: \n");
for (int n = 0; n < N; n++)
{
a[n] = rand () % 15 - rand () % 5;
printf(" %d ", a[n]);
}
for (int n = 0; n < N; n++)
{
if (a[n] < 0)
{
iFirst = n;
break;
}
}
if (iFirst == -1)
{
printf("\n Массив не содержит отрицательных элементов! \a");
theend();
}
for (int n = N - 1; n >= 0; n--)
{
if (a[n] < 0)
{
iLast = n;
break;
}
}
if (iFirst == iLast)
{
printf("\n Массив содержит один отрицательный элемент! \a");
theend();
}
else if (a[iFirst] == a[iLast])
{
printf("\n Замена не имеет смысла! \a");
flag = 0;
}
else
{
temp = a[iFirst];
a[iFirst] = a[iLast];
a[iLast] = temp;
}
if (flag)
{
printf("\n Модифицированный массив: \n");
for (int n = 0; n < N; n++)
printf(" %d ", a[n]);
}
_getch();
}
void theend()
{
printf("\n Приложение будет закрыто. ");
Sleep(5000);
exit(0);
}
ДЖ
Дмитрий Жардецкий
85 169
Лучший ответ
Один из вариантов:
int perv=-1,posl=-1,i;
double a;
for(i=0;i< 18;i++){if(b[ i]< 0 && perv< 0)perv=i,posl=i; if (b[ i] <0) posl= i;}
if( perv < 0 && posl < 0)a=b[ perv], b[ perv]= b[ posl], b[ posl] =a;

Похожие вопросы