Program Lab_2_4; uses crt, Types, Transf, IntersDr, IOGeom; (**************************************** * Puncte de intersectie: * Intersectia unui set de segmente * (segmentul care intersecteaza un nr. maxim de segmente) ****************************************) const filein = 'Segmente.txt'; fileout = 'Lab_2_4.txt'; var s: TabelSegmente; p: TabelPuncte; inter: TElem; s_max, i, j, k: word; nr, nr_p: word; begin clrscr; { Citirea datelor din fisierul , daca exista } nr := readf_segmente(filein, s); { Citirea datelor de la tastatura } if nr = 0 then begin nr := introdu_segmente(s); {Salvarea segmentelor in fisier} writef_segmente(filein, s, nr); end; { Afisarea segmentelor } write_segmente(s, nr); { Determinarea segmentului care intersecteaza cele mai multe segmente } s_max := 0; {Nr. segmentului cu maxim intersectii} nr_p := 0; {Nr. de puncte de intersectie} for i := 0 to nr-1 do begin k := 0; {Determinam punctele de inters a s[i] cu toate celelalte segmemte} for j := 0 to nr-1 do if( (i<>j) and (inters_seg_seg(s[i], s[j], p[k])=inters) ) then begin inter[k] := j; {Segmentul cu care se inters s[i]} inc(k); {Nr. de segmente intersectate} end; if k > nr_p then {Daca s[i] are mai multe intersectii decat s[s_max], atunci...} begin nr_p := k; s_max := i; end; end; { Afisarea rezultatului } writeln; if nr_p = 0 then writeln('Segmentele nu se intersecteaza') else begin writeln('Segmentul s[', s_max,'] intersecteaza ', nr_p,' segmente:'); for i := 0 to nr_p-1 do write(inter[i],' '); writeln; writeln; writeln('Apasa orice tasta pentru a vedea punctele de intersectie...'); readkey; { Afisarea rezultatului } write_puncte(p, nr_p); { Salvarea rezultatului in fisierul } writef_puncte(fileout, p, nr_p); end; readkey; end.