Có bài toán lớp 11 bro nào giỏi pascal giúp em

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi hungblack001, 26/12/08.

  1. hungblack001

    hungblack001 Mr & Ms Pac-Man

    Tham gia ngày:
    17/4/07
    Bài viết:
    271
    Nơi ở:
    A place full of love
    Em có bài toán cho như thế này mà mới chỉ học mấy cái lệnh đơn giản như for ... to ... do, while ... do, case ... of, if ... then ... esle. Nói chung là toàn các lệnh đơn giản cho người mới học. Có bài toán khó quá các bro giúp em lập trình bằng pascal được không

    Nhập m là một số nguyên dương từ bàn phím, M>9
    a_ Số m có mấy chữ số? Viết M?
    b_ Xóa đi một chữ số của M để được số Y sao cho Y là số lớn nhất lập được từ các chữ số còn lại của M.
    c_ Xóa đi một chữ số của M để được số Y sao cho Y là số bé nhất lập được từ các chữ số còn lại của M.

    Giúp em gấp với :;)
     
  2. virtualman

    virtualman Trùm Design GVN Lão Làng GVN

    Tham gia ngày:
    15/8/06
    Bài viết:
    3,951
    Nơi ở:
    Ha Noi, Vietnam,
    Cái này thì có gì đâu chứ :|
    Tớ ko có thời gian nhưng viết qua để cậu hiểu :
    1. Cậu học về xâu chưa ? Học rồi thì khai báo biến xâu rồi xài hàm length là xong ;))
    2. Dùng vòng for i:=1 to n do (n là độ dài của xâu)
    dùng thêm một vòng for j:=i thì phải :)) :'> kiểu như cho 2 vòng chạy sát nhau và so sánh a[j] và a. So sánh đến khi xuất hiện a thỏa mãn điều kiện thì thôi.
    Ko biết có đúng ko nữa. Tại ko phải dân code nên cũng hơi ngu =))
     
  3. thanhtungtnt

    thanhtungtnt The Pride of Hiigara Lão Làng GVN

    Tham gia ngày:
    23/8/06
    Bài viết:
    9,422
    Nơi ở:
    Balamb City
    Học pascal làm chi nữa nhỉ ? Tối thiểu là C chứ ? :-?
     
  4. HieuNM

    HieuNM Mayor of SimCity

    Tham gia ngày:
    3/3/07
    Bài viết:
    4,078
    Nơi ở:
    H.U.S.T
    a_số chữ số của m là lg(m)+1
    b_, c_ chịu :'>
     
  5. virtualman

    virtualman Trùm Design GVN Lão Làng GVN

    Tham gia ngày:
    15/8/06
    Bài viết:
    3,951
    Nơi ở:
    Ha Noi, Vietnam,
    Tớ nghĩ dùng hàm length nhanh nhất :D, khỏi tính toán :D
    mà m và M là 1 à ? Nếu là 1 sao còn đoạn "viết M" ???
     
  6. nhatanh

    nhatanh Samus Aran the Bounty Hunter Lão Làng GVN

    Tham gia ngày:
    19/5/04
    Bài viết:
    6,456
    Nơi ở:
    Outworld
    nếu học về khoa học máy tính thì có lẽ pascal là khởi đầu tốt hơn đấy, vì ngôn ngữ đấy nó trực quan hơn C. Mới lại cấp 3 cũng chỉ học đến pascal thôi, thi học sinh giỏi cũng dùng pascal luôn:))
    bài trên kia dùng xâu là chuẩn rồi:-<
    *mà nhớ ko nhầm là có 1 hàm trong pascal cho đổi luôn giá trị của xâu ra số, hình như là val, rồi cứ thế mà so sánh luôn thôi, ko cần for đâu
     
  7. virtualman

    virtualman Trùm Design GVN Lão Làng GVN

    Tham gia ngày:
    15/8/06
    Bài viết:
    3,951
    Nơi ở:
    Ha Noi, Vietnam,
    Hàm liên quan đến xâu ở pascal về số chỉ có length là hay xài thui mà. Nó cũng so sánh đc như bình thường. ;;)
     
  8. Funnnny

    Funnnny Will Code Python For FOOD Moderator

    Tham gia ngày:
    2/8/05
    Bài viết:
    9,406
    Nơi ở:
    Hanoi, Vietnam
    Xử lí số = xâu thường đuợc gọi là xử lí mẹo và ko đuợc dùng trong lập trình căn bản :D
     
  9. virtualman

    virtualman Trùm Design GVN Lão Làng GVN

    Tham gia ngày:
    15/8/06
    Bài viết:
    3,951
    Nơi ở:
    Ha Noi, Vietnam,
    Học qua xâu rồi thấy xử lí 1 số thứ nhanh hơn rất nhiều ;))
     
  10. ricky_martin

    ricky_martin Lão Làng Lão Làng GVN

    Tham gia ngày:
    30/12/05
    Bài viết:
    453
    Học C tự nhiên hỏi về pascal làm gì
    Mà có cái topic hỏi đáp ở trển kìa
    Viết bằng C đc ko, tôi giúp cho
     
  11. Funnnny

    Funnnny Will Code Python For FOOD Moderator

    Tham gia ngày:
    2/8/05
    Bài viết:
    9,406
    Nơi ở:
    Hanoi, Vietnam
    Đang nói đến lập trình căn bản mà :(
     
  12. virtualman

    virtualman Trùm Design GVN Lão Làng GVN

    Tham gia ngày:
    15/8/06
    Bài viết:
    3,951
    Nơi ở:
    Ha Noi, Vietnam,
    Người ta cần pascal chứ cần C làm j` :|
     
  13. nhatanh

    nhatanh Samus Aran the Bounty Hunter Lão Làng GVN

    Tham gia ngày:
    19/5/04
    Bài viết:
    6,456
    Nơi ở:
    Outworld
    \
    làm vài bài cài theo kiểu số lớn đi rồi sẽ thấy xâu cũng chỉ là giải pháp tình huồng thôi:-"
     
  14. Gamer072

    Gamer072 Youtube Master Race

    Tham gia ngày:
    14/6/07
    Bài viết:
    32
    a/ Cho vòng for, chia số M cho 10 (dùng biến tạm), tăng biến đếm, chừng nào bằng 0 thì dừng. Xuất biến đếm ra màn hình.

    b/ Cũng cho vòng lặp, chia số M cho 10 để cắt từng số ra, kiểm tra thằng nào nhỏ nhứt trong đám thì vứt đi.

    c/ Như câu b, nhưng vứt thằng lớn nhứt ra.
     
  15. hpruby5137

    hpruby5137 Mr & Ms Pac-Man

    Tham gia ngày:
    30/8/04
    Bài viết:
    285
    Tui ko hiểu rõ ý câu b,c lắm . Co fải là sau khi xóa 1 chữ số thì các chữ số còn lại vẫn theo thứ tự ấy lập thành số lớn (bé) nhất . Nếu vậy thử cách này xem :
    b) Lập vòng lặp ( for hay while tùy ) tìm chữ số đầu tiên từ bên trái mà nhỏ hơn chữ số liền ngay sau nó . Đó chính là chữ số cần bỏ , còn nếu ko có thì là chữ sô hàng đơn vị .
    c) Tương tự nhưng là chữ số cuối cùng từ bên trái lớn hơn chứ số liền sau nó . Ko có thì là chữ số hàng đơn vị .
    Ý tưởng là vậy , code thì tui chỉ xài C thui , pascal quên rùi n tui nghĩ bài này xài xâu tiện hơn .
     
  16. Staraeries

    Staraeries Mr & Ms Pac-Man

    Tham gia ngày:
    29/4/04
    Bài viết:
    115
    ... Toàn mấy bạn thông minh xuất chúng vào đây nói linh tinh. Cái khó bài này là cái thuật toán, ông nào cũng bay vào khoe hiểu biết nông cạn của mình ra.

    Chuyển số đó vào 1 chuỗi a[], rồi duyệt.
    Câu b:

    boolean check = false;
    int i;
    for (i = 1; i < a.length() -1 ; i++)
    if (a < a[i+1]) {check = true; break;}
    if (! check) i = i+1;
    // sau khi đoạn mã trên thực thi, i chính là vị trí số cần tìm. Dùng đoạn code sau để
    // trả về số tìm đc
    int j,k,number;
    k = 0;
    number = 0;
    for ( j = a.length() - 1; j>=0 ; j--)
    {
    if (i == j) continue;
    number = number + a[j]*10^k;
    k++;
    }
    //Sau khi chuỗi trên duyệt xong number là số cần tìm.

    Còn tại sao thuật toán nó ra như vậy thì:
    9876564321.
    Bạn thử nghĩ xem delete số nào trong dãy đó sẽ đc số nhỏ nhất thì sẽ hiểu.
     

Chia sẻ trang này