Turbo Pascal - Heo mi

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi Yurisha, 2/1/06.

  1. Yurisha

    Yurisha Youtube Master Race

    Tham gia ngày:
    30/5/05
    Bài viết:
    99
    Nơi ở:
    KFC
    Ặc ặc, ở trường bắt học TP chán òm. Có 2 bài này em làm mãi không được mong các bác chỉ giáo:

    Bài 1 : Viết chương trình nhập vào từ bàn phím 1 dãy n phần tử. In ra màn hình mã nhị phân của từng phần tử.
    Bài 2 : Tính

    t(x)= x-(x^3/3!)+(x^5/5!)-........

    Giúp em nhá. Thanks nhiều ;;)
     
  2. squall&rinoa

    squall&rinoa Donkey Kong

    Tham gia ngày:
    23/1/04
    Bài viết:
    449
    Nơi ở:
    Hải Phòng
    Trời, trường nước mình cổ hủ quá, bây giờ ai dùng cái TP ấy nữa chứ. Buồn thiệt
     
  3. unrealcharacter

    unrealcharacter Youtube Master Race

    Tham gia ngày:
    2/6/03
    Bài viết:
    80
    mói đọc Turbo đựoc 1 ngày xem cái này có gíp được hông:

    program Hecoso;
    uses crt;
    var a,b,c,d,e,x,y: Longint;
    begin
    clrscr;
    Write ('Nhap mang? dau : ');readln(b);
    Write ('Nhap mang? sau : ');readln(y);
    Write('Muon doi tu he 10 sang he bao nhieu : ');
    readln(a);
    Repeat
    e:=0;d:=1;
    x:=b;
    Repeat
    c:=x mod a;
    e:=e+c*d;
    d:=d*10;
    x:=x div a;
    Until x=0;Write(' ',e);
    b:=b+1;
    Until b=y+1;
    Readln;
    End.
     
  4. lordhoang

    lordhoang Youtube Master Race

    Tham gia ngày:
    20/4/05
    Bài viết:
    6
    Bác nói vậy đau có được, dù cổ hủ nhưng nó làm nền tảng rất tốt.
    Còn vấn đề đầu tiên: Tui chỉ xin nói qua cách giải bài một là: Bạn nên dùng các phép toán xử lý bit của một số: Chú ý cái phép SHR với SHL ấy.
    Ko nhớ chính xác nhưng mà nó là thế này:
    (a Shr(hoặc là SHL vì tui ko nhớ rõ) k) and 1 = 1 thì bit k của a là 1 còn nếu =0 thì bít đó là 0.
     
  5. H.Rukario

    H.Rukario Youtube Master Race

    Tham gia ngày:
    19/1/06
    Bài viết:
    3
    Nơi ở:
    Hoen
    Bài 1_ Uses crt;
    Var a,b:array[1..100]of integer;
    i,n,j,m:integer;
    begin clrscr;
    write(‘nhap so phan tu la n=’);readln(n);
    for i:=1 to n do
    begin
    write(‘a[‘,i,’]=’);readln(a);
    end;
    writeln(‘tung phan tu cua mang chuyen ve he nhi phan la:’);
    for i:=1 to n do
    begin
    j:=1;
    repeat
    b[j]:=a mod 2;
    a:=a div 2;
    if a<>o then
    j:=j+1;
    until a=0;
    for m:=j downto 1 do
    write(b[m]);
    writeln;
    end;
    readln;
    end.
    :> :cool:
     
  6. Yurisha

    Yurisha Youtube Master Race

    Tham gia ngày:
    30/5/05
    Bài viết:
    99
    Nơi ở:
    KFC
    Hơ hơ, bài 2 không ai giúp tui à. Bài 1 của bác H.Rukario xài thành công rùi. Cám ơn nhiều nha.
     
  7. H.Rukario

    H.Rukario Youtube Master Race

    Tham gia ngày:
    19/1/06
    Bài viết:
    3
    Nơi ở:
    Hoen
    Còn bài 2 chưa làm vì chưa có thời gian suy nghĩ ,để bao giờ nghĩ xong thì tui làm nốt cho, còn nếu có người khác giải hộ thì càng tốt!
     
  8. H.Rukario

    H.Rukario Youtube Master Race

    Tham gia ngày:
    19/1/06
    Bài viết:
    3
    Nơi ở:
    Hoen
    Tui làm nốt bài 2 cho: :D :D :D
    Bài 2_ Uses crt;
    var t,tu,mau,x:real;
    a,j,n,i:integer;
    function gt(o:integer):longint;
    begin
    a:=1;
    for j:=1 to o do
    a:=a*i;
    gt:=a;
    end;
    begin clrscr;
    write(‘nhap x=’);readln(x);
    repeat
    write(‘nhap so lan la n=’);readln(n);
    until (n<20) or (n=20);
    {nhỏ thôi chứ to quá thì sợ máy nó tính lâu mới ra kết quả được, số to mà, nhất là tính giai thừa, 20! đúng là to không tưởng tượng nổi}
    t:=0;
    tu:=x;
    i:=1;
    repeat
    tu:=tu*x*x;
    i:=i+2;
    mau:=gt(i);
    if i mod 4 = 3 then
    t:=x-(tu/mau);
    if i mod 4 = 1 then
    t:=x+(tu/mau);
    until (i>n) or (i=n);
    writeln(‘t(x)=’,t:0:2);
    readln;
    end.
    :hug: ::) :;) :wink: :> :cool: :D
     
  9. H.Rukario

    H.Rukario Youtube Master Race

    Tham gia ngày:
    19/1/06
    Bài viết:
    3
    Nơi ở:
    Hoen
    Đúng là chán , mình làm bài rõ dài mà chả chả thấy ai cộng cho mình chút MP nào với cả EXP nữa, nhưng không sao.........
    To yushira: còn bài nào nữa thì gửi nốt lên đây tui làm hộ cho, càng nhiều càng tốt, hy vọng lúc nào đấy sẽ được cộng điểm.....hehehe :D :D :D
     
  10. H.Rukario

    H.Rukario Youtube Master Race

    Tham gia ngày:
    19/1/06
    Bài viết:
    3
    Nơi ở:
    Hoen
    Nhầm........ :hug:
    Phải là Yurisha chứ không phải Yushira........hehehe
    Cố gắng gửi nhiều bài nhé, càng nhiều càng tốt , Tết mới có việc để làm
    nhanh lên nha.
    Nói thêm vài câu cho đỡ bị trừ Mp.....hihihihi :D :D
     
  11. H.Rukario

    H.Rukario Youtube Master Race

    Tham gia ngày:
    19/1/06
    Bài viết:
    3
    Nơi ở:
    Hoen
    Mất công nói vậy sao hổng có ai trả lời vậy hen, hình như cái topic này chả ai thèm quan tâm thì phải , chán thật đấy ::( :D :-s
     
  12. yin yang

    yin yang Donkey Kong

    Tham gia ngày:
    28/6/04
    Bài viết:
    362
    Bất cứ ngôn ngữ lập trình nào cũng có cấu trúc giống nhau và Pascal là phương tiện tốt nhất để hiểu rõ "thế nào à lập trình". Nếu bạn chê nó thì mình nghĩ bạn ko có chút gì hứng thú với lập trình cả.
    Mình cũng xin giúp bạn 1 chút theo hiểu biết nhỏ nhoi của mình, nếu ai là cao thủ nếu mình có sai thì cũng xin đc giúp đỡ cho mình mặc dù mình ko fải là programmer. Mình ko viết chươgn trình sẵn cho bạn mà chỉ ghi thuật giải vì nếu chỉ ghi bài giải chắc chắn bạn sẽ ko hỉu gì cả.
    Bất cứ bài tóan lt nào chỉ cần chia nhỏ nó ra là giải quyết đc hết
    Bài 1: Phần tử mà bạn nói có lẽ tòan là số nguyên dương đúng ko? Vậy thì
    Bước 1: tạo 1 mảng có thể chứa n phần tử (cái này dễ dàng mà, đúng ko? Chỉ là 1 bài tóan nhỏ ấy mà)
    Bước 2: làm 1 chương trình con đổi phần tử từ thập phân sang nhị phân (cái này cũng tạm thui ko khó lắm)
    Bước 3: dzô ctrình chính cho chạy từ đầu đến cuối mảng khi duyệt wa phần tử nào thì "ném" phần tử đó dzô cái procedure để nó cho ra 1 dãy nhị phân rùi in ra lun. (dùng vòng lặp để duyệt từ đầu đến cuối mảng) => dễ wá chừng
    Bước 4: end. :D

    Bài 2:
    bạn có thấy mỗi khi số hạng là chẵn (ví dụ số hạng thứ 2 thứ 4 thứ 6...) thì dấu của nó là "-". vậy thì
    Ấy chít fải về ăn cum goài, mà bài này thì có wá chừng thứ để làm, thui hẹn tối nay mình post típ.
     
  13. unrealcharacter

    unrealcharacter Youtube Master Race

    Tham gia ngày:
    2/6/03
    Bài viết:
    80
    Công nhận bài Rukario hay thật đó...Nhưng bài của mình dùng có phương pháp thô sơ mà vẫn giải được cho nhiêu hệ cơ số lại ngắn dễ hiểu :D ( chỉ có đúng thuần túy cách làm logic ...mình nghĩ mãi mới ra cách viét ngược đáp số theo cách đổi hệ cơ số bằng tay đó ( cái này chắc đồ độc quá )...cũng đáng xem chứ bộ mấy BÁC chả ai nói gì về bài của tui cả..... ::(
     
  14. yin yang

    yin yang Donkey Kong

    Tham gia ngày:
    28/6/04
    Bài viết:
    362
    thì đơn giản thui, cho số đó chia cho 2 lấy dư và mỗi khi có dư thì "ném" dzô 1 cái chuỗi sau đó cho nó đọc từ cuối đến đầu và in ra. Đơn giản mà!

    Bài 2:Sao bạn ko giới hạn cái tổng là mấy số hạng? Thui cứ cho là x cũng là số số hạng lun nhé!
    B1: viết 1 cái thủ tục hay hàm tính giai thừa. (hàm thì tốt hơn)
    B2: viết 1 cái thủ tục hay hàm tính lũy thừa (Hàm cũng tốt hơn)
    B3: Cho 1 biến chạy từ 1 tới x, nếu mà biến là chẵn (div 2 = 0) thì nhân cái số hạng cho "-1" rùi cộng dzô tổng chung.
    B4: nếu biến này chạy tới x thì dừng vòng lặp và in ra tổng.
    B5: end.

    Phù xong rùi đó bạn, mình bỏ lập trìn hlâu rùi nên ko thể giúp bạn viết 2 chương trình hoàn chỉnh nhưng nếu ko hỉu có thể hỏi mình từng bước cụ thể.
     
  15. tomorrowneverdies

    tomorrowneverdies Bạch Diện Thư Sinh

    Tham gia ngày:
    6/6/02
    Bài viết:
    4,306
    Nơi ở:
    The World Of Games
    khỏi cần dùng hàm tính mũ, áp dụng công thức của logarit cũng được mà, tính x^y bằng hàm: exp(y*ln(x)), còn cái mã nhị phân thì có cách bật bit, tắt bit để chuyển thập phân thành nhị phân, nhị phân thành thập phân cũng mau lắm, lại tốn ít bộ nhớ ^^.
     
  16. unrealcharacter

    unrealcharacter Youtube Master Race

    Tham gia ngày:
    2/6/03
    Bài viết:
    80
     
  17. yin yang

    yin yang Donkey Kong

    Tham gia ngày:
    28/6/04
    Bài viết:
    362
    Trời, for i:=n downto 1 do: (nếu nhớ ko lầm)
    Ráng "ép" cho nó ra thui hihi
    Theo mình thì bạn gì đó còn đang đi học, viết ctrình để học chứ ko fải để đối fó, vì vậy những hàm fức tạp kia có thể ko cần đến vì nó sẽ làm cho ctrình .... ngắn đi. hihi
     
  18. unrealcharacter

    unrealcharacter Youtube Master Race

    Tham gia ngày:
    2/6/03
    Bài viết:
    80
    "i:=n downto 1 do " cái này chỉ dùng để tính số lần lặp mà bác...kết quả muốn viết được ra man hình mới khó...nếu chỉ có 1 biến chính thì không xong nếu như không làm cách trên của tui...tui phải cho tới mấy biến đệm vào đó( ít thui không nhiều )..

    Bác nói dễ nhưng tui thấy khó...Bác thử làm hộ một cái khác cho mình dc không...Nếu đảo ngược dễ thế hóa ra mình là thằng ếch à....
     
  19. Yurisha

    Yurisha Youtube Master Race

    Tham gia ngày:
    30/5/05
    Bài viết:
    99
    Nơi ở:
    KFC
    Ặc ặc, toàn pro, nói tui chả hiểu gì cả. Có ai có cái ebook về cái này không ?
    PS: bài của H.Rukario tui paste vô giấy đem nộp chấm có 7,5 à => sếp bảo cách không hay T_T. Cách hay theo ý sếp là xài kiểu string, rùi dùng hàm char, với lị cái gì đó chuyển lung tung (hôm đấy mải tán chuyện đâm ra chả hiểu gì :D)
    Đại khái là khi chia lấy số dư thì gán cái np bằng np+ số dư.......
    Làm hộ nha, mồng 10 này phải nộp lại bài theo cách đó :D.
     
  20. yin yang

    yin yang Donkey Kong

    Tham gia ngày:
    28/6/04
    Bài viết:
    362
    Có lẽ thế hihi.
    Thuật giải của mình thực ra vẫn chưa thể gọi là tối ưu nhưng cũng đủ dễ hiểu mà.
    Mỗi fần tử của chuỗi có đchỉ là chuoi, vì thế để truy cập từ cuối lên đầu thì:
    for i:=n downto 1 do
    write(chuoi);
    và để có n thì dùng hàm length(chuoi) để tìm dộ dài của chuỗi.
    và đoạn ctrình hoàn chỉnh có lẽ là: (lâu rùi ko đụng lại ltrình nên.... hihi)
    n:=length(chuoi);
    for i:=n downto 1 do
    write(chuoi);
    writeln;
     

Chia sẻ trang này