Отрицательные элементы
Задан одномерный массив вещественных чисел длины [latex]n[/latex]. Определить сумму и количество отрицательных элементов в массиве.
Входные данные:
В первой строке задано количество элементов массива [latex]n[/latex] ([latex]n[/latex] ≤ [latex]100[/latex]). В следующей строке через пробел задано [latex]n[/latex] вещественных чисел — элементы массива, значения которых не превышают по модулю [latex]100[/latex].
Выходные данные:
В одной строке вывести количество отрицательных чисел и через пробел их сумму с точностью до [latex]2[/latex]-х знаков после десятичной точки.
Тесты
# | ВХОДНЫЕ ДАННЫE: | ВЫХОДНЫЕ ДАННЫЕ: |
---|---|---|
1 | 5
6 -7.5 2.1 -2.0 0 |
2 -9.50 |
2 | 2 -1 -2 |
2 -3.00 |
3 | 6
1 1 1 1 1 1 |
0 0.00 |
4 | 7 -1.99 -5.34 9 6.43 -6.32 0 -7.43 |
4 -21.08 |
5 | 3 -1.992345 -5.334224 9 |
2 -7.33 |
Код программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <iostream> using namespace std; int main() { int n, m = 0; double k = 0; cin >> n; double *x = new double[n]; for (int i=0; i<n; i++) cin >> x[i]; for (int i=0; i<n; i++) { if (x[i]<0){ m++; k+=x[i]; } } cout.precision(2); cout << m << " " << fixed << k; return 0; } |
Решение задачи:
Для решения данной задачи я описал две переменные: [latex]m[/latex] типа [latex]int[/latex] и [latex]k[/latex] типа [latex]double[/latex], которые изначально равны [latex]0[/latex]. Цикл ищет в массиве элементы которые меньше [latex]0[/latex]. C каждым найденным отрицательным элементом, [latex]m[/latex] увеличиваться на [latex]1[/latex], а к числу [latex]k[/latex] прибавляется сам элемент.