Informatică, întrebare adresată de ciprian74, 8 ani în urmă

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 de Apollyon
0

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";

}

Alte întrebări interesante