C/C++

Создать одномерный массив, состоящий из n вещественных элементов. Элементы массива определить при помощи случайных чисел

Создать одномерный массив, состоящий из n вещественных элементов. Элементы массива определить при помощи случайных чисел в диапазоне от -13 до 13. Размерность массива определить при помощи именованной константы. Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом — все отрицательные (элементы, равные 0, считать положительными). Порядок элементов должен быть сохранен. Дополнительный массив использовать запрещается. Помогите пожалуйста сделать сортировку.
По моему тут лучше воспользоваться динамическими массивами из модуля vector -так проще будет:
#include <ctime>
#include <vector>
#include <cstdlib>
#include <iomanip>
#include <iostream>
using namespace std;
void print_array(vector <double> x)
{
int i, j = 0;
for (i = 0; i < x.size(); i++)
{
j++;
cout << setw(15) << x[i];
if (j == 8)
{
j = 0;
cout << endl;
}
}
if (j) cout << endl;
cout << endl;
}
int main()
{
system("color e8");
system("cls");
cout << setprecision(10) << fixed;
int i, j = 0, n;
double a;
cout << "n = ";
cin >> n;
vector &lt;double> A(n);
srand(time(nullptr));
for (i = 0; i < n; i++)
A[i] = 26. * rand() / RAND_MAX - 13.;
print_array(A);
for (i = 0; i < n; i++)
{
a = A[i];
if (a >= 0)
{
A.erase(A.begin() + i);
A.emplace(A.begin() + j, a);
j++;
}
}
print_array(A);
system("pause > nul");
}
Вывод вещественного массива у меня подогнан под экран шириной 120 литер. Все операторы system можно убрать -у меня они только для управления цветами экрана и для удобного выхода из программы. И что-то ещё с сайтом случилось: &lt; -это знак < если что!
Дмитрий Титов
Дмитрий Титов
66 572
Лучший ответ
Г@
Григорий @
13 084
Игорь Шпелев пузырек не попрет, в задании порядок элементов должен быть сохранен
#include<iostream>
int main()
{
int b = 0;
const int n = 6;
int a[n] = {0,-77,4,-3,1,0};
for (int i = 0; i < n; i++)
{
std::cout << a[i]<<' ';
}
std::cout << '\n';
for (int i = 0; i < n; i++)
{
if (a[i]>=0) {
std::swap(a[i], a[b]);
b++;
}
}

for (int i = 0; i < n; i++)
{
std::cout << a[i] << ' ';
}
}
Zaklr Huseynov
Zaklr Huseynov
8 954
Zaklr Huseynov в выше херня получилась, вот правильно
#include<iostream>
int main()
{
const int n = 10;
int a[n] = { 31,2,-3,111,-22,-13,4,-8,-9,-66 };
for (int i = 0; i < n; i++)
{
//a[i] = rand() % 27 - 13;
std::cout << a[i] << ' ';
}
std::cout << '\n';
for (int i = 0; i < n; i++)
{
for (int i = 0; i < n; i++)
{
if (a[i] < 0) {
if (a[i+1]>0)
std::swap(a[i], a[i+1]);
}

}
}
for (int i = 0; i < n; i++)
{
std::cout << a[i] << ' ';
}
}
Это JS? Лол, тоже учу его