C/C++

Вычислить модуль суммы всех отрицательных элементов, сумму всех положительных и разницу между значениями этих сумм

Что тут не так?

#include
using namespace std;
int main()
{
setlocale(0, ".1251");
int N = 9;
double a[9], b[9];
double max_a = a[0], max_b = b[0];

cout << " Ввести массив : ";
for (int i = 0; i < N; i++) {
cin >> a[i];
if (a[i] > max_a) {
max_a = a[i];
}
}
int rol = max_a;
for (int j = 0; j < N; j++) {
cin >> b[j];

if (b[j] > max_b) {
max_b = b[j];
}
}
max_a = max_b;
cout << " Massiv a = " " " << max_a << endl;

max_b = rol;
cout << "Massiv b = " " " << max_b << endl;
cin.get();
cin.get();
return 0;
}
DS
Dominic Slim
585
#include <algorithm>
#include <iostream>
#include <array>
#include <numeric>
using namespace std;
int main() {
system("chcp 1251 > nul");
array<double, 9> box;
auto add = [](double& x) { cin >> x; };
cout << "Введите массив: ";
for_each(box.begin(), box.end(), add);
auto neg = [](double a, double x) { return x < 0? a + x : a; };
auto negs = fabs(accumulate(box.begin(), box.end(), 0., neg));
cout << "Сумма модулей отрицательных значений: " << negs << '\n';
auto pos = [](double a, double x) { return x > 0? a + x : a; };
auto poss = accumulate(box.begin(), box.end(), 0., pos);
cout << "Сумма положительных значений: " << poss << '\n';
auto diff = fabs(negs - poss);
cout << "Разница между значенями сумм: " << diff << endl;
system("pause > nul");
}
Юра Невзоров
Юра Невзоров
64 692
Лучший ответ
В алгоритме решена не та задача:
у тебя должен быть массив с "+" и "-" элементами
ты его проходишь циклом и проверяешь каждый элемент
если число "<0" то складываешь его в переменную для всех отрицательных элементов пусть это X
если число ">=0" то складываешь его в переменную для всех положительных элементов пусть это Y
после цикла выводишь в cout
X, Y, mod(X-Y)
1. Код должен быть рабочим, хоть там куча лишних действий и... зачем там ДВА cin.get();?
2. Код ищет максимальные элементы массива, то есть максимальное число в массиве, а у тебя их 2.
3. Ноль не отрицательное число и не положительное, как я понимаю, его не стоит учитывать, в таком случае код будет таким:
#include "cmath"
#include "iostream"

using namespace std;

int main(void)
{
int size;
cin >> size;
int posled[size];
for(int i=0; i> posled[i];
}
int polozhit=0, otricat=0, nuli=0;
for(int i=0; i0)
{
polozhit+=posled[i];
}
else if(posled[i]<0)
{
otricat+=posled[i];
}
else if(posled[i]==0)//Как бонус количество нулей в последовательности
{
nuli++;
}
}
//cout << "\nSumma otricat= " << (otricat*(-1)) << "\n Summa polozhit " << polozhit << "\n Kolichestvo nulei " << nuli;//Это без библиотеки cmath
cout << "\nSumma otricat= " << abs(otricat) << "\n Summa polozhit " << polozhit << "\n Kolichestvo nulei " << nuli;
return 0;
}
Писал "на коленке", код не тестировал, но должен работать.
MS
Miwanja Silivanov
561
Miwanja Silivanov Код протестировал, работает нормально. Сам сможешь разобраться в коде?

Похожие вопросы