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

    Hỏi về xâu và mảng 2 chiều

    Em có 2 câu nhỏ sau:
    1. Xóa các khoảng cách thừa ở đầu xâu (không dùng câu lệnh while hay repeat).
    2. Trong phần M2C, sgk có viết:
    Code:
    for i:=1 to N do
    begin
    Max:=A[i,1]
    for j:=2 to N do
    if A[i,j]>Max then Max:=A[i,j];
    end;
    Đây là thuật toán tìm phần tử lớn nhất ở mỗi hàng. Nhưng em tưởng phải là tìm kiếm trong mỗi cột chứ . Vì em tưởng với thuật toán trên, khi i=1, j sẽ chạy từ 1 đến N (từ trên xuống theo cột). Rồi khi i=2, j sẽ tiếp tục chạy như thế nhưng ở cột thứ 2. Cứ như vậy cho đến i=N, nhưng tại sao lại là tìm phần tử lớn nhất của cột . Ai chỉ cho em với được không. Em cảm ơn nhiều :X
    Quote Quote

  2. #2
    Tham gia
    07-11-2011
    Bài viết
    163
    Like
    1
    Thanked 17 Times in 15 Posts
    Mảng 2 chiều thực ra là mảng của mảng, do đó thuật toán trên là tìm phần tử lớn nhất ở mỗi hàng. Bạn hãy suy nghĩ lại về định nghĩa mảng xem.

  3. #3
    Tham gia
    05-08-2010
    Bài viết
    313
    Like
    9
    Thanked 73 Times in 69 Posts
    Quote Được gửi bởi motien View Post
    Em có 2 câu nhỏ sau:
    1. Xóa các khoảng cách thừa ở đầu xâu (không dùng câu lệnh while hay repeat).
    2. Trong phần M2C, sgk có viết:
    Code:
    for i:=1 to N do
    begin
    Max:=A[i,1]
    for j:=2 to N do
    if A[i,j]>Max then Max:=A[i,j];
    end;
    Đây là thuật toán tìm phần tử lớn nhất ở mỗi hàng. Nhưng em tưởng phải là tìm kiếm trong mỗi cột chứ . Vì em tưởng với thuật toán trên, khi i=1, j sẽ chạy từ 1 đến N (từ trên xuống theo cột). Rồi khi i=2, j sẽ tiếp tục chạy như thế nhưng ở cột thứ 2. Cứ như vậy cho đến i=N, nhưng tại sao lại là tìm phần tử lớn nhất của cột . Ai chỉ cho em với được không. Em cảm ơn nhiều :X
    Hàng hay cột chỉ là tương đối thôi bạn. Mảng a[1..m, 1..n] có thể hiểu là m hàng , n cột hay m cột, n hàng tùy theo code thôi bạn.

    Bài 1 dùng for là được.

  4. #4
    Tham gia
    14-02-2012
    Bài viết
    63
    Like
    0
    Thanked 16 Times in 16 Posts
    Cho bạn code xóa các ký tự trắng ở đầu xâu (mà thầy của bạn và bạn gọi là các khoảng cách) chẳng cần dung cấu trúc lặp nào cả! (Dùng đệ quy). Nếu khó hiểu thì bạn:
    1/Tìm sách tự học đệ quy.
    2/Hoặc bạn dùng lặp for (lập trình phi modul=tức là lập trình không dùng hàm, thủ tục hoặc đệ quy). Cần chú ý: Ký tự trống đầu tiên cần phát hiện bạn dùng lệnh s[1]:=' ' (hoặc s[1]:=#32). Sau đó dùng thủ tục chuẩn (sẵn có trong thư viện Pascal xóa ký tự trống đầu tiên này: Delete(s,1,1)->dịch ra Tiếng Việt nghĩa là:"Xóa 1 ký tự (trống) ở vị trí 1 thuộc xâu s"
    Bạn mở lặp for để xóa các ký tự còn lại ở đầu xâu. (không dùng While hoặc Repeat mà!). Chúc bạn tự làm được bài theo hướng này (vì đã cấp cho bạn những ý tưởng chính rồi)
    !!!Hãy nhớ một điều: Lời gọi hàm hay thủ tuc phải dùng tham số thực sự chứ không được dùng tham số hình thức. (tạm để bạn dễ hiểu: tham số thực sự là các biến khai báo ở đầu chương trình mẹ(Main Prog; còn các tham số hình thức là các tham số khai báo ở giữa 2 ngoăc đơn thuộc phần tiêu đề (Trong C/C++ gọi là nguyên mẫu) của chương trình con)

    program Xoa_ktu_trong;
    Uses Crt;
    Var st:string;

    Procedure Khutrong(var s:String); {Thu tuc xoa cac ky tu trong o dau xau}
    Begin
    If s[1]=' ' then
    Begin
    Delete(s,1,1);
    Khutrong(s);
    End;
    End;

    Begin clrscr;
    Write('Nhap xau s:'); Readln(st);
    Khutrong(st);
    Write('Xau vua nhap da xoa cac ky tu trong o dau:',st);
    Readln;
    End.

  5. Thành viên Like bài viết này:


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
  •