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

Rezolvați în C++ vă rog!

Anexe:

boiustef: in cîmpul e al structurii seg punem 1 in caz dacă segmentele [a,b] şi [c,d] au intersecţie

Răspunsuri la întrebare

Răspuns de boiustef
1

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("inters.in");

ofstream g("inters.out");

struct seg{int a,b,c,d,e;}p[1000], t;

int n, i, j, inters;

int main()

{

   f >> n;

   for (i=0; i<n; ++i)

   {

       f >> p[i].a>>p[i].b>>p[i].c>>p[i].d;

       if ((p[i].a<=p[i].c && p[i].c<=p[i].b)||(p[i].c<=p[i].a && p[i].a<=p[i].d))

         {++inters; p[i].e=1;}

   }

   for (i=0; i<n-1; ++i)

   {

       for (j=i+1; j<n; ++j)

       {

           if (p[i].e==1 && p[j].e==1 && p[j].a<p[i].a)

           {

               t=p[i], p[i]=p[j]; p[j]=t;

           }

       }

   }

   g << inters << "\n";

   for (i=0; i<n; ++i)

   {

       if (p[i].e==1)

         { g << p[i].a << " " << p[i].b << " " << p[i].c << " " << p[i].d << "\n";}

   }

}

Alte întrebări interesante