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:
- Am declarat patru variabile de tip float pentru a memora cele patru numere reale introduse de la tastatură.
- Am citit valorile acestor numere de la tastatură folosind comanda cin.
- 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.
- 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).
- 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.