Fie un vector cu n elemente. Sa se determine media aritmetica a nr.pozitive si suma nr. negative.
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using std::cout, std::cin, std::endl;
static int *creareVector(const size_t &nrElemente)
{
int *pVector = new int[nrElemente];
for (size_t i = 0; i < nrElemente; ++i)
{
cout << "Introdu numarul (pozitiv/negativ) >> ";
cin >> pVector[i];
}
return pVector;
}
static void calculSumaSiMedie(int *pVector, const size_t &nrElemente)
{
int sumaNrNeg{};
double sumaMedie{}, contorNumere{};
for (size_t i = 0; i < nrElemente; i++)
{
if (pVector[i] < 0)
sumaNrNeg += pVector[i];
if (pVector[i] >= 0)
{
sumaMedie += pVector[i];
++contorNumere;
}
}
cout << "Suma numerelor negative este " << sumaNrNeg << " iar media aritmetica a numerelor pozitive este "
<< sumaMedie / contorNumere << endl;
}
int main()
{
size_t nrElemente;
cout << "Introdu n (de ex 5) >> ";
cin >> nrElemente;
int *pVector = creareVector(nrElemente);
calculSumaSiMedie(pVector, nrElemente);
delete[] pVector;
return 0;
}
Explicație:
Citești numărul de elemente din vector, aloci dinamic un vector de N elemente ( de asta se ocupă funcția creareVector(...) ).
După ce ai alocat și ai adăugat elementele-n vector îl parcurgi.
Dacă elementul curent e mai mic decât 0 ( dacă e negativ ) pracatic îl aduni la o sumă.
Dacă acesta e mai mare sau egal decât 0 ( dacă e pozitiv ) îl adaugi la o sumă ( din nou ) și ți minte câte elemente ai pozitive ( ca să calculezi la final media aritmetică a numerelor ).
La final afișezi suma elementelor negative și media aritmetică a celor pozitive.
De cele menționate mai sus se ocupă funcția calculSumaSiMedie(...).