Hiển thị kết quả từ 1 đến 4 / 4
  1. #1
    Tham gia
    04-06-2007
    Bài viết
    2
    Like
    0
    Thanked 0 Times in 0 Posts

    Giúp Em với các Bác ơi.

    Em mới học Passcal nên không thạo lắm, Em đang mắc phải lỗi: Có thể nhập mảng(1chiều) vào đc, nhưng khi in lên(In sau khi sắp xếp) nó lại không dc, mong các bác trợ giúp.
    Thanks!
    BL:
    Program c3d1;
    Const n=4;{n la so phan tu cua mang}
    Type
    MANG1=array[1..n] of integer;
    Var
    a:MANG1;
    i,j,Min,tg:integer;
    Begin {Nhap mang}
    For i:=1 to n do
    Begin
    Write('Moi ban nhap a[',i,']=');readln(a[i]);
    End;
    Writeln('Mang ban vua nhap la:');
    {In mang vua nhap}
    For i:=1 to n do
    Writeln(a[i]:6);
    {Sap xep mang bang thuat toan chon truc tiep}
    For i:=1 to n-1 do
    Begin
    MIN:=1;
    For j:=i+1 to n do
    if (a[MIN]<a[j]) then MIN:=j;
    {Doi vi tri cua MIN cho a[i]}
    a[i]:= a[MIN];
    a[MIN]:=tg;
    tg:=a[i];
    End;
    Writeln('mang sau khi sap xep');
    For i:=1 to n do
    Write(a[i]:6);
    Readln;
    End.
    Quote Quote

  2. #2
    Tham gia
    22-11-2005
    Location
    HN
    Bài viết
    147
    Like
    0
    Thanked 1 Time in 1 Post
    Quote Được gửi bởi vantuyenhd View Post

    For i:=1 to n-1 do
    Begin
    MIN:=1;
    For j:=i+1 to n do
    if (a[MIN]<a[j]) then MIN:=j;
    a[i]:= a[MIN];
    a[MIN]:=tg;
    tg:=a[i];
    End;

    End.
    Nếu bạn ko để cái đoạn đổi vị trí vào trong 1 cái begin end cùng với cái if thì làm sao mà được .....
    Đúng của nó phải là:
    if (a[MIN]<a[j]) then
    beign
    MIN:=j;
    a[i]:= a[MIN];
    a[MIN]:=tg;
    tg:=a[i];
    End;

  3. #3
    Tham gia
    28-06-2007
    Location
    HCM
    Bài viết
    270
    Like
    0
    Thanked 9 Times in 9 Posts
    tui làm thử có dở thì nói nha:

    bt:
    program sapxep;
    uses crt;
    const n=20;
    type mang=array [1..20] of integer;
    var a:mang;
    m:integer;
    procedure sort(var a:mang;m:integer);
    var i,j:integer;
    begin
    for i:=1 to m-1 do
    for j:=2 to m do
    if a[i]>a[j] then
    begin
    a[i]:=a[i]+a[j];
    a[j]:=a[i]-a[j];
    a[i]:=a[i]-a[j];
    end;
    end;
    procedure nhap(var a:mang;var m:integer);
    var i:integer;
    begin
    clrscr;
    write('Nhap so phan tu: ');
    readln(m);
    clrscr;
    for i:=1 to m do
    begin
    write('Phan tu thu ',i,': ');
    read(a[i]);
    clrscr;
    end;
    end;
    procedure xuat(a:mang;m:integer);
    var i:integer;
    begin
    write('Mang da sap xep la: ');
    for i:=1 to m do
    write(a[i],' ');
    readln;
    end;
    begin
    nhap(a,m);
    sort(a,m);
    xuat(a,m);
    readln;
    end.

  4. #4
    Tham gia
    21-07-2007
    Bài viết
    2
    Like
    0
    Thanked 0 Times in 0 Posts

    Nói nhỏ nè !

    mình thường dùng thuật toán sau để sắp xếp mảng, vừa đơn giản, vừa dễ nhớ T__T nhưng thấy người áp dụng. giả dụ trường hợp này mảng có n phần tử và muốn sắp xếp từ nhỏ đến lớn nhé! ^^

    For i:=1 to n-1 do
    For j:=i+1 to n do
    If mang1[i]>mang1[j] then
    Begin
    trunggian:=mang1[i];
    mang1[i]:=mang1[j];
    mang1[j]:=trunggian;
    End;

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • 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
  •