C++ Intersezione due vettori

di il
3 risposte

C++ Intersezione due vettori

Stamattina ho fatto un esame di informatica all'università e il testo era questo :
"Letti a1, b1, a2, b2 appartenenti ad R da tastiera, restiruisca al chiamante se [a1, b1] intersecato con [a2, b2] è diverso dall'insieme vuoto.

Sinceramente ho avuto molti dubbi. Ho considerato [a1, b1] e [a2, b2] come due vettori con dimensione 2.
Ora vi posto come l'ho svolto :

#include <iostream>

using namespace std;

const int K = 2;

void Scrivi_vettore (float v [K]);
bool intersezione (float v1 [K], float v2 [K]);

int main()
{
float v1 [K];
float v2 [K];

Scrivi_vettore (v1);
Scrivi_vettore(v2);
intersezione (v1, v2);

return 0;
}

void Scrivi_Vettore (float v [K])
{
cout << "Scrivi elementi da tastiera : ";
for (int i = 0; i < K; i++)
{
cin >> v ;
}

}

bool intersezione (float v1 [K], float v2 [K])
{
bool condizione = true;

if (v1[0] != v2[0] && v1[0] != v2[1])
{
if (v1[1] != v2[0] && v1[1] != v2[1])
{
return false;
}
}
else
return true;


return condizione;
}

So che probabilmente è sbagliato.. Cosa cè che non va ? Come andava fatto secondo voi ?

3 Risposte

  • Re: C++ Intersezione due vettori

    Ciao, quei [a1, b1] e [a2, b2] sono intervalli sulla retta dei numeri reali. Ora abbiamo che due intervalli non si intersecano se, detto in parole povere, il secondo intervallo inizia dopo la fine del primo. Es [0, 1] e [2, 3]. Invece si intersecano se il secondo intervallo inizia entro la fine del primo. Es [0, 1] [0.8, 2]
    Quindi quello che devi fare è capire quale dei due intervalli inizia prima (cioè chi è il minore tra a1 e a2) e poi verificare se l'altro intervallo inizia prima della sua fine. Ad esempio supponiamo che sia a1 < a2. Allor l'intersezione non è vuota se a2 < b1, cioè se l'inizio del secondo avviene prima della fine del primo intervallo.

  • Re: C++ Intersezione due vettori

    Ahhh ho capito. tutto chiaro. Non avevo proprio capito che quei due fossero intervalli. L'esame è andato male sicuramente e mi toccherà rifarlo a giugno...
  • Re: C++ Intersezione due vettori

    carpenix ha scritto:


    Non avevo proprio capito che quei due fossero intervalli.
    Può anche darsi che mi sbagli, ma dal testo e dal modo in cui sono scritti sembrerebbero proprio due intervalli chiusi e limitati.

    Buona fortuna con i tuoi esami!
Devi accedere o registrarti per scrivere nel forum
3 risposte