Informatică, întrebare adresată de Utilizator anonim, 9 ani în urmă

Fisierul data.in are urmatorul continut:
6
80 85
3 7
50 70
83 84
2 5
25 50

Se cere sa se afiseze pe ecran numarul intervalelor distincte obtinute prin reuniunea celor aflate in fisier.Daca fisierul are continutul de mai sus, se obtine reuniunea [2,7]U[25,70]U[80,85] si se afiseaza pe ecran 3. Explicati in limbaj natural metoda de rezolvare.
Nu inteleg practic cerinta.

Răspunsuri la întrebare

Răspuns de krisztian3
2
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
ifstream f;
f.open("date.in");
int n;f>>n;
int a[100][2];
for(int i=0;i<n;i++)
{
    f>>a[i][0];
    f>>a[i][1];
}
int numar=0;
for(int i=0;i<n;i++)
{
    for(int j=0;j<n;j++)
    {
        if(i==j)continue;
        if(a[i][0]!=-1)
        {
            if(a[i][0]>=a[j][0] && a[i][1]<=a[j][1]) a[i][0]=-1;
        }
    }
}
for(int i=0;i<n;i++)
{
    if(a[i][0]!=-1)
    {
        cout<<a[i][0]<<" U "<<a[i][1]<<endl;
        numar++;
    }
}
cout<<numar;

f.close();
    return 0;
}

Eu asa am facut. Nu prea efectiv, dar face treaba.

Alte întrebări interesante