Să se scrie un program care citeşte n (validati n prin reintroducerea valorii) numere
reale, pe care le stochează într-un tablou alocat dinamic, afişează suma elementelor
negative din tablou, iar la sfârşit eliberează zona de memorie alocată.
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <limits>
int main() {
int dimensiuneTablou = 0;
/* Citim N */
std::cout << "Introdu N: ";
std::cin >> dimensiuneTablou;
/* inițializăm un Array dinamic de N numere reale */
double* pArrayNumere = new double[dimensiuneTablou];
/* citim cele N numere */
for (int i = 0; i < dimensiuneTablou; i++) {
/* while-ul se va repeta până când Userul va introduce un input valid */
while (true) {
/* citim numărul */
std::cout << "pArrayNumere[" << i << "]: ";
std::cin >> pArrayNumere[i];
/* cin.good() returnează true dacă std::cin a putut extage un număr real din inputul utilizatorului */
if (std::cin.good()) {
break;
} else {
/* dacă nu s-a putut extrage niciun număr real din input repetăm while-ul */
/* curătăm BUFFER-ul */
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
}
}
/* la final afișăm numerele din Array */
for (int i = 0; i < dimensiuneTablou; i++) {
std::cout << "pArrayNumere[" << i << "]: " << pArrayNumere[i] << "\n";
}
/* și eliberăm memoria */
delete[] pArrayNumere;
return 0;
}