#include <cmath>
#include <iomanip>
#include <iostream>
#include <random>
using namespace std;
int main() {
cout << "n: ";
size_t n;
cin >> n;
auto a = new(nothrow) double[n];
if (a == nullptr) {
puts("Недостаточно памяти!");
cin.ignore(0x1000, '\n');
cin.get();
exit(1);
}
uniform_int_distribution<> uid(-25, 25);
mt19937 gen{ random_device()() };
for (size_t i = 0; i < n; ++i) {
a[i] = uid(gen) / 10.0;
}
cout.setf(ios::fixed);
cout.precision(1);
for (size_t i = 0; i < n; ++i) {
cout << setw(5) << a[i];
}
cout.put('\n');
auto sum = 0.0;
for (auto i = 0; i < n; i += 2) {
sum += a[i];
}
cout << "Сумма элементов массива: " << sum << '\n';
size_t first = -1;
for (size_t i = 0; i < n; ++i) {
if (a[i] < 0) {
first = i;
break;
}
}
if (first == -1) {
puts("Отрицательные элементы не найдены!");
}
else {
size_t last = -1;
for (size_t i = n - 1; i != first; --i) {
if (a[i] < 0) {
last = i;
break;
}
}
if (first == last) {
puts("Найден только один отрицательный элемент!");
}
else if (first == last - 1) {
puts("Найдены только два отрицательных элемента.");
puts("Эти элементы расположены рядом!");
}
else {
sum = 0;
for (auto i = first + 1; i != last; ++i) {
sum += a[i];
}
cout << "Сумма элементов массива расположенных между первым и последним отрицательными элементами: " << sum << '\n';
}
}
size_t k = n;
for (size_t i = 0; i < n; ++i) {
if (fabs(a[i]) < 1.0) {
a[i] = 0;
--k;
}
}
size_t j = 0;
for (size_t i = 0; i < n; ++i) {
if (a[i] != 0) {
a[j++] = a[i];
}
}
for (size_t i = k; i < n; ++i) {
a[i] = 0;
}
puts("Массив после сжатия и замены нулями");
for (size_t i = 0; i < n; ++i) {
cout << setw(5) << a[i];
}
cout.put('\n');
n = k;
puts("Массив после сжатия");
for (size_t i = 0; i < n; ++i) {
cout << setw(5) << a[i];
}
cout.put('\n');
delete[] a;
}
#include <iostream>
#include <cmath>
int main() {
// Ввод размера массива
int n;
std::cout << "Введите размер массива: ";
std::cin >> n;
if (n <= 0) {
std::cout << "Размер массива должен быть больше 0." << std::endl;
return 1;
}
// Создание и заполнение массива
double arr[n];
std::cout << "Введите элементы массива: " << std::endl;
for (int i = 0; i < n; i++) {
std::cin >> arr[i];
}
// 1. Сумма элементов массива с нечетными номерами
double sum_odd_index = 0;
for (int i = 1; i < n; i += 2) {
sum_odd_index += arr[i];
}
std::cout << "Сумма элементов с нечетными номерами: " << sum_odd_index << std::endl;
// 2. Сумма элементов между первым и последним отрицательными элементами
int first_neg = -1, last_neg = -1;
for (int i = 0; i < n; i++) {
if (arr[i] < 0) {
if (first_neg == -1) {
first_neg = i;
}
last_neg = i;
}
}
double sum_between_neg = 0;
if (first_neg != -1 && last_neg != -1 && first_neg < last_neg) {
for (int i = first_neg + 1; i < last_neg; i++) {
sum_between_neg += arr[i];
}
}
std::cout << "Сумма элементов между первым и последним отрицательными: " << sum_between_neg << std::endl;
// 3. Сжатие массива
int new_size = 0; // Новый размер массива после удаления элементов
for (int i = 0; i < n; i++) {
if (std::fabs(arr[i]) > 1) {
arr[new_size++] = arr[i];
}
}
// Заполнение освободившихся элементов нулями
for (int i = new_size; i < n; i++) {
arr[i] = 0;
}
// Вывод сжатого массива
std::cout << "Сжатый массив: ";
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}