В одномерном массиве состоящем из N вещественных элементов вычислить:
1) Сумму элементов массива с отрицательными номерами;
2) Сумму элементов массива, расположенных между первым и последним отрицательными элементами.
3) Сжать массив, удалив из него элементы, модуль которых не превышает 1. Освободившиеся в конце массива элементы заполнить нулями.
Другие языки программирования и технологии
C++ одномерный массив
1) Пусть будет "сумма отрицательных элементов".
#include <ctime>
#include <cstdlib>
#include <numeric>
#include <iterator>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
srand(time(0));
int n;
cout << "n? ";
cin >> n;
double *a = new double[n], *e = a + n;
generate_n(a, n, [](){ return (rand() % 101 - 50) / 10.0; });
cout << "массив: \n";
auto oit = ostream_iterator<double>(cout, " ");
copy(a, e, oit);
auto sn = accumulate(a, e, 0.0,
[](double s, double e){ return s + (e < 0? e : 0); });
cout << "\nсумма отрицательных элементов: " << sn;
auto op = [](double e){ return e < 0; };
auto f = find_if(a, e, op) + 1;
if (f != a + n) {
typedef reverse_iterator<double> rit;
auto l = find_if(rit(e), rit(a), op).base() - 1;
auto s = f < l? accumulate(f, l, 0.0) : 0.0;
cout << "\ncумма элементов м/у первым и последним отрицательными: " << s;
}
auto ne = remove_if(a, e, [](double e){ return abs(e) < 1; });
fill(ne, e, 0);
cout << "\nизмененный массив: \n";
copy(a, e, oit);
cout << endl;
}
#include <ctime>
#include <cstdlib>
#include <numeric>
#include <iterator>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
srand(time(0));
int n;
cout << "n? ";
cin >> n;
double *a = new double[n], *e = a + n;
generate_n(a, n, [](){ return (rand() % 101 - 50) / 10.0; });
cout << "массив: \n";
auto oit = ostream_iterator<double>(cout, " ");
copy(a, e, oit);
auto sn = accumulate(a, e, 0.0,
[](double s, double e){ return s + (e < 0? e : 0); });
cout << "\nсумма отрицательных элементов: " << sn;
auto op = [](double e){ return e < 0; };
auto f = find_if(a, e, op) + 1;
if (f != a + n) {
typedef reverse_iterator<double> rit;
auto l = find_if(rit(e), rit(a), op).base() - 1;
auto s = f < l? accumulate(f, l, 0.0) : 0.0;
cout << "\ncумма элементов м/у первым и последним отрицательными: " << s;
}
auto ne = remove_if(a, e, [](double e){ return abs(e) < 1; });
fill(ne, e, 0);
cout << "\nизмененный массив: \n";
copy(a, e, oit);
cout << endl;
}
Отрицательными номера (индексы массива) быть не могут. Они могут быть только целыми числами >= 0.
Остальное - поня. Делается очень просто.
Остальное - поня. Делается очень просто.
Похожие вопросы
- Как правильно задать одномерный массив в C++?
- Заполнить случайным образом одномерный массив из n элементов и обменять местами последний и максимальный (в паскале)
- Написать в С++. Задан одномерный массив А из 10 чисел.
- сформировать с помощью ДСЧ одномерный массив и вывести его на печать
- сформировать с помощью ДСЧ одномерный массив и вывести его на печать .
- СРОЧНО ПАСКАЛЬ задан одномерный массив с (1..10), дать ответ: каких элементов больше: положительных или отрицательных
- Задача pascal abc fr. Одномерный массив
- C++ Двухмерный массив с случайными не повторяющимися числами.
- Помогите испрвить код Переписать первые элементы каждой строки матрицы a(n*m), больше некоторого числа C, в массив b .
- c#. Сортировка массива в отдельном методе. Консольное приложение.