Scrieţi un program care citeşte de la tastatură patru numere reale a, b, c şi d cu a<b si c<d  şi care afişează intersecţia intervalelor [a,b] şi [c,d]. 11

#include <iostream>

using namespace std;

int main()

{

    float a, b, c, d;

    cout << „Introduceti numerele reale a, b, c si d cu a<b si c<d: „;

    cin >> a >> b >> c >> d;

    if (b < c || d < a) {

        cout << „Nu exista intersectie intre intervale.” << endl;

    } else {

        float start = (a > c) ? a : c;

        float end = (b < d) ? b : d;

        cout << „Intersectia intervalelor [” << a << „,” << b << „] si [” << c << „,” << d << „] este [” << start << „,” << end << „]” << endl;

    }

    return 0;

}

Explicații:

  1. Am declarat patru variabile de tip float pentru a memora cele patru numere reale introduse de la tastatură.
  2. Am citit valorile acestor numere de la tastatură folosind comanda cin.
  3. Verificăm dacă cele două intervale au sau nu intersecție. În caz contrar, afișăm un mesaj corespunzător. Verificarea se face prin comparația extremelor celor două intervale (b < c sau d < a). Dacă ambele comparații sunt adevărate, înseamnă că nu există intersecție între intervale.
  4. Dacă cele două intervale au intersecție, aflăm capetele intersecției. Pentru a afla capătul din stânga, vom compara capătul stâng al primului interval (a) cu capătul stâng al celui de-al doilea interval (c) și vom selecta valoarea maximă dintre cele două (deci a sau c). Pentru a afla capătul din dreapta, vom compara capătul drept al primului interval (b) cu capătul drept al celui de-al doilea interval (d) și vom selecta valoarea minimă dintre cele două (deci b sau d).
  5. Afișăm intersecția, formată din cele două capete, sau un mesaj corespunzător în cazul în care nu există intersecție.

Această soluție poate fi îmbunătățită pentru a acoperi și cazul în care intervalele se suprapun parțial, nu doar complet.

Similar Posts

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *