Kết quả 1 đến 2 của 2
  1. #1
    Ngày tham gia
    Nov 2015
    Bài viết
    0

    Ghép tệp có sắp xếp

    Cho 2 tệp ORD1.INP và ORD2.INP mỗi dòng của tệp chứa 1 số số nguyên. Các số nguyên trong mỗi tệp đã được sắp thứ tự không giảm. Hãy lập trình hợp nhất 2 tệp này thành tệp văn bản ORD.INP mỗi dòng chứa một số nguyên sao cho thứ tự vẫn không giảm

  2. #2
    Ngày tham gia
    Nov 2015
    Bài viết
    2
    Trích dẫn Gửi bởi khaimy123
    Cho 2 tệp ORD1.INP và ORD2.INP mỗi dòng của tệp chứa 1 số số nguyên. Các số nguyên trong mỗi tệp đã được sắp thứ tự không giảm. Hãy lập trình hợp nhất 2 tệp này thành tệp văn bản ORD.INP mỗi dòng chứa một số nguyên sao cho thứ tự vẫn không giảm
    Mai mốt cho thêm cái ví dụ cho chắc ăn chứ và còn phần giới hạn số lượng nữa [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG], code theo : 1 dòng out tương ứng 1 dòng inp trong 2 tệp: =>đơn thuần là sắp xếp :|
    Mã:
    const
            f1='ord1.inp';
            f2='ord2.inp';
            fo='ord.inp';
            maxn=50000;
    var
            a:array[1..maxn] of integer;
            n:word;
            f,g,h:text;
    procedure qsort;
    procedure sort(d,c:word);
    var
            i,j,:word;t,mid:integer;
    begin
            i:=d;
            j:=c;
            mid:=a[(d+c) shr 1];
            repeat
                    while a[i]<mid do inc(i);
                    while a[j]>mid do dec(j);
                    if i<=j then
                            begin
                                    t:=a[i];
                                    a[i]:=a[j];
                                    a[j]:=t;
                                    inc(i);
                                    dec(j);
                            end;
            until i>j;
            if i<c then sort(i,c);
            if j>d then sort(d,j);
    end;
    begin
            sort(1,n);
    end;
    procedure run;
    var i:word;
    begin
            assign(f,f1);
            reset(f);
            assign(g,f2);
            reset(g);
            assign(h,fo);
            rewrite(h);
            while not eof(g) and not eof(f) do
                    begin
                            n:=0;
                            while not eoln(f) do
                                    begin
                                            inc(n);
                                            read(f,a[n]);
                                    end;
                            readln(f);
                            while not eoln(g) do
                                    begin
                                            inc(n);
                                            read(g,a[n]);
                                    end;
                            readln(g);
                            qsort;
                            for i:=1 to n do
                                    write(h,a[i],' ');
                            writeln(h);
                    end;
            close(f);
            close(g);
            close(h);
    end;
    BEGIN
            run;
    END.

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •