Top.Mail.Ru
Ответы

Составить программу для с++ без функций

написать самую простую программу для с++ по заданию: в одномерном массиве состоящем из n вещественных элементов вычислить 1) сумму элементов массива с нечетными номерами, 2) сумму элементов массива, расположенных между первым и последним отрицательными элементами. Сжать массив, удалив из него все элементы модуль которых не превышает 1. Освободившиеся в конце массива элементы заполнить нулями.

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Высший разум
4мес
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
 #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; 
} 
Аватар пользователя
Мудрец
4мес
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
 #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; 
}  
Аватар пользователя
Мастер
4мес

#include <iostream>
#include <vector>

int main() {
int n;

// Ввод размера массива
std::cout << "Введите количество элементов в массиве: ";
std::cin >> n;

std::vector<double> array(n);

// Ввод элементов массива
std::cout << "Введите элементы массива:n";
for (int i = 0; i < n; ++i) {
std::cin >> array[i];
}

// 1) Сумма элементов массива с нечетными номерами
double sumOddIndices = 0.0;
for (int i = 1; i < n; i += 2) {
sumOddIndices += array[i];
}
std::cout << "Сумма элементов с нечетными индексами: " << sumOddIndices << std::endl;

// 2) Сумма элементов между первым и последним отрицательными элементами
int firstNegativeIndex = -1, lastNegativeIndex = -1;
for (int i = 0; i < n; ++i) {
if (array[i] < 0) {
if (firstNegativeIndex == -1) {
firstNegativeIndex = i;
}
lastNegativeIndex = i;
}
}

double sumBetweenNegatives = 0.0;
if (firstNegativeIndex != -1 && lastNegativeIndex != -1 && firstNegativeIndex != lastNegativeIndex) {
for (int i = firstNegativeIndex + 1; i < lastNegativeIndex; ++i) {
sumBetweenNegatives += array[i];
}
}
std::cout << "Сумма элементов между первым и последним отрицательными элементами: " << sumBetweenNegatives << std::endl;

// 3) Сжатие массива, удалив элементы, модуль которых не превышает 1
std::vector<double> compressedArray;
for (double value : array) {
if (std::abs(value) > 1) {
compressedArray.push_back(value);
}
}

// Заполнение "освобожденных" позиций нулями
compressedArray.resize(n, 0.0);

// Вывод сжатого массива
std::cout << "Сжатый массив:n";
for (double value : compressedArray) {
std::cout << value << " ";
}
std::cout << std::endl;

return 0;
}