Преобразование множества прямых линий

Тема в разделе "Delphi - FAQ", создана пользователем Zikfrid, 4 окт 2008.

Статус темы:
Закрыта.
  1. Zikfrid

    Zikfrid Гость

    Необходима помощь в паскале смог решить 2 из 3ех условий задачи вот она сама

    Преобразование множества прямых линий
    Множество прямых М задано коэффициентами их уравнений вида Ах + Вy + C = 0. Выполнить над М последовательность действий, указанную в задании.

    а) Выбрать из M все пары параллельных прямых;
    б) вычислить расстояния между параллельными прямыми;
    в) сформировать множество P принадлежит M, включающее в себя только прямые, расстояния между которыми меньше заданной величины.

    вот код первых двух условий

    Код (Text):
    Program Zd_3;
    Uses WinCrt;
    const n=10;
    type mas=array[1..n,1..n] of integer;
    mass=array[1..n,1..n] of real;
    mmm=array[1..n] of integer;
    nnn=array[1..n] of real;
    var A1,B,C,C1,P1:mas;
    Y1,D1:mass;
    B1,B2:nnn;
    aa,bb,cc,tt:integer;

    Function PLine (var L1,L2:mmm):boolean;
    begin
    if L1[1]/L2[1]=L1[2]/L2[2] then
    Pline:=true
    else Pline:=false;
    end;

    Function R (var A,B,C,Y:nnn ): real;
    var r1,r2,r3:real;
    begin
    Y[1]:=-C[1]-A[1]/B[1];
    r1:=A[2]+B[2]*Y[2]+C[2];
    r2:=A[2]*A[2]+B[2]*B[2];
    r3:=abs(r1)/sqrt(r2);
    R:=r3;
    end;

    Procedure Vvod(var m:integer; var V:mas);
    var i,j:integer;
    begin
    writeln ('Vvedite colichestvo praymyx:');
    readln (m);
    writeln ('Vvedite koefficienty praymyx:');
    for i:=1 to m do
    for j:=1 to 3 do
    begin
    readln(V[i,j]);
    end;
    end;

    Procedure Vivod(m:integer; V:mas);
    var i,j:integer;
    begin
    for i:=1 to m do
    begin
    write(V[i,1],'x + ',V[i,2],'y + ',V[i,3]);
    writeln;
    end;
    end;

    Procedure Parall(m:integer; V:mas);
    var i1,i2,f:integer; L1,L2:mmm; O,A,B,C:real; Y:nnn;
    begin
    f:=0;
    for i1:=1 to (m-1) do
    begin
    L1[1]:=V[i1,1]; L1[2]:=V[i1,2];
    for i2:=i1+1 to m do
    begin
    L2[1]:=V[i2,1]; L2[2]:=V[i2,2];
    if PLine(L1,L2) then
    begin
    writeln('Iskomaya para uravneniya:');
    writeln('----------------------------');
    writeln (V[i1,1],' + ',V[i1,2],' + ',V[i1,3]);
    writeln (V[i2,1],' + ',V[i2,2],' + ',V[i2,3]);
    writeln('----------------------------');
    f:=f+1;
    end;
    end;
    end;
    if (f=0) then writeln ('Iskomyx par net');
    end;

    Procedure Rass(m:integer; V:mas);
    var i1,i2:integer; O:real; Y,A,B,C:nnn; L1,L2:mmm;

    begin
    for i1:=1 to (m-1) do
    begin
    A[1]:=V[i1,1]; B[1]:=V[i1,2]; C[1]:=V[i1,3];
    for i2:=i1+1 to m do
    begin
    A[2]:=V[i2,1]; B[2]:=V[i2,2]; C[2]:=V[i2,3];
    begin
    O:=R(A,B,C,Y);
    writeln('*************');
    writeln(o:5:2);
    writeln('*************');
    end;
    end;
    end;
    end;
    begin
    Vvod(aa,A1);
    Vivod(aa,A1);
    Parall(aa,A1);
    Rass(aa,A1);
    end.
    не смог составить код 3его условия надеюсь на вашу помошь
     
Загрузка...
Похожие Темы - Преобразование множества прямых
  1. WolfEater
    Ответов:
    0
    Просмотров:
    782
  2. jager
    Ответов:
    1
    Просмотров:
    1.296
  3. PahaStar
    Ответов:
    0
    Просмотров:
    985
  4. PahaStar
    Ответов:
    0
    Просмотров:
    845
  5. ask40
    Ответов:
    0
    Просмотров:
    966
Статус темы:
Закрыта.

Поделиться этой страницей