Предмет: Информатика, автор: MrWonka

ПОМОГИТЕ НАПИСАТЬ КОД НА С++ ПОЖАЛУЙСТА.
Задан целочисленный массив Х из 20 элементов. Получить массив
Y, в который переписать те положительные элементы массива Х,
которые расположены между двумя отрицательными. Если таких
элементов нет, вывести соответствующее сообщение. Элементы
массива Y не должны повторяться

Ответы

Автор ответа: alexshor
1

Ответ:

Результат в приложении

Объяснение:

int main()

{

   int x[20] = { 1,-2,3,-4,5,-6,-7,3,-1,14,33,45,-1,13,-8,3,2,8,90,11 };

   int y[20];

   int n = 0;

   for (int i = 1; i < 19; i++)

   {

       if (x[i - 1] < 0 && x[i + 1] < 0)

       {

           bool exists = false;

           for (int j = 0; j < n; j++)

           {

               if (y[j] == x[i])

               {

                   exists = true;

                   break;

               }

           }

           if (!exists)

           {

               y[n] = x[i];

               n++;

           }

       }

   }

   if (n == 0)

       std::cout << "Нет элементов" << std::endl;

   else

   {

       for (int i = 0; i < n; i++)

       {

           std::cout << (y[i]) << " ";

       }

       std::cout << std::endl;

   }

   _getch(); //Экран не закрывается, пока не нажата любая клавиша

   return 0;

}

Приложения:

MrWonka: есть вариант усовершенствовать код так, чтоб с клавиатуры вводились числа в массив Х?
alexshor: Да, конечно. Тогда вместо инициализации массива:
int x[20] = { 1,-2,3,-4,5,-6,-7,3,-1,14,33,45,-1,13,-8,3,2,8,90,11 };
надо написать цикл запроса значений:
int x[20];
for (int i = 0; i < 20; i++)
{
std::cout << "введите число " << i+1 << ":";
std::cin >> x[i];
}
MrWonka: введите число 1:56
введите число 2:-42
введите число 3:32
введите число 4:-1
введите число 5:0
введите число 6:1
введите число 7:5
введите число 8:4
введите число 9:-53
введите число 10:102
введите число 11:-78
введите число 12:-57
введите число 13:-79
введите число 14:-77
введите число 15:42
введите число 16:77
введите число 17:10
введите число 18:12
введите число 19:-15
введите число 20:-99
32 102 -57 -79
выводит и положительные и отрицательные числа
а нужно чтоб только положительные, стоящие между отрицательными
MrWonka: всё, разобрался, работает, от души
alexshor: Точно! я забыл в условие добавить, что само число должно быть положительным. Вместо if (x[i - 1] < 0 && x[i + 1] < 0) надо if (x[i - 1] < 0 && x[i + 1] < 0 && x[i] >= 0)
Похожие вопросы
Предмет: Русский язык, автор: wolf1212007
Предмет: Русский язык, автор: 1986лариса