int X[n]; выражение не определяется константой С++
#include <iostream>
#include <conio.h>
#include <locale>
using namespace std;
int main() {
setlocale(LC_ALL, ""); // Встановлення локалі для вводу та виводу тексту
int n, k;
cout << "Введіть розмір масиву: ";
cin >> n;
if (n <= 0) {
cout << "Розмір масиву має бути більшим за 0!" << endl;
return 1;
}
cout << "Введіть значення k: ";
cin >> k;
int X[n];
cout << "Введіть елементи масиву: ";
for (int i = 0; i < n; i++) {
cin >> X[i];
}
// Перевпорядкування масиву
int i = 0, j = -1;
// Переміщення від'ємних елементів на початок
for (i = 0; i < n; i++) {
if (X[i] < 0) {
j++;
swap(X[i], X[j]);
}
}
// Перевірка передостаннього непарного елемента
if (j % 2 == 0 || X[j - 1] <= k) {
goto output; // Перехід до виводу результату
}
// Переміщення останнього додатнього елемента на передостанню непарну позицію
swap(X[j], X[i]);
i++;
// Сортування додатніх елементів
for (int i = 0; i < n; i++) {
if (X[i] > 0) {
for (int j = i + 1; j < n; j++) {
if (X[i] > X[j]) {
swap(X[i], X[j]);
}
}
}
}
output: // Мітка для виходу з циклу
cout << "\nВідсортований масив: ";
for (int i = 0; i < n; i++) {
cout << X[i] << " ";
}`введите сюда код`
_getch(); // Очікування натискання клавіші для завершення програми
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Стандарт С++ предполагает, что размер статического массива известен во время компиляции. В вашем случае вы хотите создать массив, размер которого определяете во время выполнения.
Используйте динамически выделяемый массив, наподобие
int * X = new int[n];
или пользуйтесь векторами.