-

   rss_forum_sources_ru

 - e-mail

 

 -

 LiveInternet.ru:
: 29.07.2007
:
:
: 80

:


( )

, 18 2021 . 10:59 +
Alexandrietz: : , . , . .
    program Lab9;
    { , .
    , . .}
    uses
    UnitRealization;
    var
    F, F1, F2: TextFile;
    begin
    if(ParamCount <> 3) then
    Writeln(' .')
    else
    begin
    try
    Assign(F, ParamStr(1));
    Assign(F1, ParamStr(2));
    Assign(F2, ParamStr(3));
    Reset(F);
    if(SeekEOF(F)) then
    begin
    CloseFile(F);
    Writeln(' .');
    exit;
    end;
    except
    on System.IO.IOException do
    begin
    Writeln(' ', ParamStr(1));
    Exit;
    end;
    end;
    CloseFile(F);
    NaturalMerge(F, F1, F2);
    end;
    end.


    Unit
    UnitRealization;
    Interface
    Procedure NaturalMerge(const F, F1, F2: TextFile);
    Implementation
    Procedure NaturalMerge(const F, F1, F2: TextFile);
    var
    a, b, save_to, swap, subgroup_1, subgroup_2: Integer;
    flag, flag_1, flag_2: Boolean;
    begin
    subgroup_1 := 10000;
    subgroup_2 := 10000;
    flag := False;
    while(not(flag)) do
    //(subgroup_1 <> 1) or (subgroup_2 <> 1)
    begin
    save_to := 1;
    subgroup_1 := 0;
    subgroup_2 := 0;
    Reset(F);
    Rewrite(F1);
    Rewrite(F2);
    Read(F, a);
    Write(F1, a, ' ');
    while(not(SeekEOF(F))) do
    begin
    Read(F, b);
    if(a > b) then
    begin
    case save_to of
    1: begin
    save_to := 2;
    subgroup_1 += 1;
    end;
    2: begin
    save_to := 1;
    subgroup_2 += 1;
    end;
    end;
    end;
    case save_to of
    1: Write(F1, b, ' ');
    2: Write(F2, b, ' ');
    end;
    a := b;
    end;
    if(save_to = 2) then
    subgroup_2 += 1
    else
    subgroup_1 += 1;
    CloseFile(F);
    CloseFile(F1);
    CloseFile(F2);
    Rewrite(F);
    Reset(F1);
    Reset(F2);
    Read(F1, a);
    Read(F2, b);
    while(not(SeekEOF(F1)) and not(SeekEOF(F2))) do
    begin
    if(a <= b) then
    begin
    Write(F, a, ' ');
    Read(F1, a);
    end
    else
    begin
    Write(F, b, ' ');
    Read(F2, b);
    end;
    end;
    while(not(SeekEOF(F1))) do
    begin
    swap := a;
    Read(F1, a);
    if(not(SeekEOF(F1))) then
    Write(F, swap, ' ')
    else
    Write(F, swap);
    end;
    while(not(SeekEOF(F2))) do
    begin
    swap := b;
    Read(F2, b);
    if(not(SeekEOF(F2))) then
    Write(F, swap, ' ')
    else
    Write(F, swap);
    end;
    CloseFile(F);
    CloseFile(F1);
    CloseFile(F2);
    if(subgroup_1 = 1) then
    flag := True;
    end;
    Erase(F1);
    Erase(F2);
    end;
    end.

- , , . , while , F1 F2. , F1, , F1, , . , . , , . F1 F2? , {5, 6, 7, 1, 2, 3}, {1, 2, 5, 6}. , ? PascalABC.NET

https://forum.sources.ru/index.php?showtopic=421525&view=findpost&p=3848255

:  

: [1] []
 

:
: 

: ( )

:

  URL