В массиве X = (x1, x2, ..., xn) поменять местами первый и второй отрицательные элементы, третий и четвертый отрицательные элементы и т.д
Файл main.cpp:
#include <iostream>
#include "class.cpp"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
setlocale(LC_ALL,"Ukrainian");
DynamicMasive X;
int N = 0;
std::cout << "Кількість елементів масива Х = ";
std::cin >> N;
srand(time(0));
for (int i = 0; i < N; i++)
{
X.InsertValue(1+rand()%41-20);
}
X.DisplayData();
}
Файл сlass.cpp:
#include <iostream>
#include "class.hpp"
//Конструктор за замовчуванням
DynamicMasive :: DynamicMasive()
{
Data = NULL;
Length = 0;
}
//Конструктор
DynamicMasive :: DynamicMasive(int Size)
{
Data = (int* )malloc(Size*sizeof(int)); //Data = new int[Size]
Length = Size;
}
//Деструктор
DynamicMasive :: ~DynamicMasive()
{
if (Data!=NULL)
free(Data);
}
//Процедура для введення елементів масиву
void DynamicMasive :: InsertValue(int Value)
{
Length++;
Data = (int*)realloc(Data,Length*sizeof(int));
Data[Length - 1] = Value;
}
//Процедура, що повертає значення елемента масиву за індексом
int DynamicMasive :: GetValue(int i)
{
return(Data[i]);
}
//Процедура, що відображає масив
void DynamicMasive :: DisplayData()
{
for (int i = 0; i < Length; i++)
{
std::cout << i <<") " << Data[i] << std::endl;
}
}
Файл *-class.hpp
class DynamicMasive
{
private:
int * Data;
int Length;
public:
DynamicMasive(); //Конструктор за замовчуванням
DynamicMasive(int Size); //Конструктор
~DynamicMasive(); //Деструктор
int GetValue(int i); //Метод, що повертає значення елемента масиву за індексом.
void InsertValue(int Value); //Процедура для ведення елементів масиву
void DisplayData(); //Процедура що відображає масив
};
Я создал генерацию массива и вывод его на экран, и что то не могу понять как найти и поменять местами его отрицательные элементы. Помогите пожалуйста.
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Вам нужно завести массив neg на 4 элемента для хранения индексов отрицательных элементов и счётчик cnt
Обходите массив в цикле for. Если встретили отрицательный элемент - записываете текущий индекс в neg[cnt] и увеличиваете cnt. Когда дошли дол четвёртого отрицательного - останавливает цикл и выполняете swap элементов с соответствующими индексами из массива.