Cerinţa
Se dă un șir cu n elemente, numere reale. Să se determine câte dintre elemente se află în afara intervalului închis determinat de primul și ultimul element.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere reale, reprezentând elementele vectorului.
Date de ieşire
Programul afișează pe ecran numărul C, reprezentând valoarea cerută.
Restricţii şi precizări
1 ≤ n ≤ 200
elementele vectorului vor fi cuprinse între -1000 și 1000
Exemplu
Intrare
6
2 0.5 4 -1 -8 -3
Ieșire
2
Explicație
Elementele șirului aflate în afara intervalului [-3,2] sunt: 4 și -8.
Salut! Va rog mult sa ma ajutati la aceasta problema. Nu reusesc sa o fac. Este vorba de problema #986 de pe pbinfo. As dori si explicatii la cod.
Răspunsuri la întrebare
Răspuns:
#include <iostream>
double* creareVectorNumere(const size_t& dimensiuneVector);
void afisareContorNumere(const size_t& dimensiuneVector, double vectorNumere[]);
int main()
{
// citim dimensiunea vectorului pe care urmează să-l creăm
size_t dimensiuneVector;
std::cout << "Introdu dimensiunea vectorului >> ";
std::cin >> dimensiuneVector;
// alocăm dinamic un vector de N elemente și adăugăm elementele-n el
double* vectorNumere = creareVectorNumere(dimensiuneVector);
// afișăm câte elemente sunt înafara intervalului
afisareContorNumere(dimensiuneVector, vectorNumere);
// eliberăm memoria alocată
delete[] vectorNumere;
return 0;
}
double* creareVectorNumere(const size_t& dimensiuneVector)
{
double* vectorNumere = new double[dimensiuneVector];
for (size_t i{}; i < dimensiuneVector; ++i) {
std::cout << "vectorNumere[" << i << "] = ";
std::cin >> vectorNumere[i];
}
return vectorNumere;
}
void afisareContorNumere(const size_t& dimensiuneVector, double vectorNumere[])
{
// aflăm limita inferioară a intervalului
double limitaInferioara = std::min<double>(vectorNumere[0], vectorNumere[dimensiuneVector - 1]);
// și cea superioară
double limitaSuperioara = std::max<double>(vectorNumere[0], vectorNumere[dimensiuneVector - 1]);
int contorNumere{};
// parcurgem vectorul iar dacă numărul curent se află înafara intervalului incrementăm contorul
for (size_t i{}; i < dimensiuneVector; ++i) {
if (vectorNumere[i] < limitaInferioara || vectorNumere[i] > limitaSuperioara) {
contorNumere++;
}
}
// la final afișăm contorul
std::cout << contorNumere << "\n";
}