Go Back   VN-Zoom forum > Chia sẻ kiến thức > Lập trình > Pascal | C/C++

 


Server Counter Strike 1.6 miễn phí cho thành viên VZ

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 11-05-2008, 16:33   #1
Rìu Bạc
 
Mr_Dolphin's Avatar
 
Tham gia: Dec 2007
Bài: 341
VZD: 4.437
Điểm: 70/47 bài viết
Post Chia cho 2 ??? Mọi người fix lỗi dùm

Mình làm bài nhập một số lớn rồi chia nó cho 2 lấy phần nguyên, khổ nỗi làm được rồi nhưng khi chạy, ngoài kết quả lại đc thêm một đống các kí tự lung tung. Mà code này mình viết còn nhiều hạn chế lắm, nếu st[1]=1 thì kết quả sẽ có 0 ở đầu, điểm đó nhờ mọi người giúp sửa nghe. Cảm ơn trước.
PHP Code:
uses crt;
var 
n:string;
function 
div2(st:string):string;
    var 
du,a,b,i,x,y:byte;code:integer;tam:string;
    
begin
       du
:=0;y:=length(st);
       for 
i:=1 to y do
          
begin
           x
:=ord(st[i])-48;
           
a:=du*10 x;
           
b:=a div 2;
           
div2[i]:=char(b+48);
           
du:=a mod 2;
          
end;
    
end;
begin
    clrscr
;
    
write('Nhap so: ');readln(n);
    
writeln(n,' div 2 = ',div2(n));
    
readln
end

__________________
-_::Tin Học là chia sẻ ::_-
http://cnttk1a.hnsv.com
Chào mừng các bạn đến diễn đàn lớp tui!
Mr_Dolphin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-05-2008, 22:19   #2
Rìu Sắt Đôi
 
thienthan's Avatar
 
Tham gia: Nov 2007
Bài: 280
VZD: 4.091
Điểm: 74/60 bài viết
Send a message via Yahoo to thienthan
Default

Bạn nên sửa như sau.
PHP Code:
tmp=''
begin
   x
:=ord(st[i])-48;
   
a:=du*10 x;
   
b:=a div 2;
   
tmp:=tmp+char(b+48);
   
du:=a mod 2;
end;
div2:=tmp
Do mình không cài sẵn pascal nên không test được. Nếu có vấn đề gì bạn cứ post lên nhé.
Nếu bạn viết như vậy thì chuỗi trả lại không xác định được phần sau do nó phải kết thúc bằng kí tự null (char(0)) thì mới coi là kết thúc dãy. Nếu bạn gán như vậy thì dãy trả lại không xác định được.
Cơ bản về thuật toán thì bạn không sai. Nhưng bạn nên thay kiểu dữ liệu thành mảng byte để tiếp kiệm dữ liệu mà thực hiện nhanh hơn. Mỗi ô nhớ như vậy bạn có thể lưu hai chữ số.
thienthan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-05-2008, 22:28   #3
Rìu Bạc
 
Mr_Dolphin's Avatar
 
Tham gia: Dec 2007
Bài: 341
VZD: 4.437
Điểm: 70/47 bài viết
Default

Bạn có để ý code minh khi khai báo biến hàm có 1 biến là tam mà trong bài không dùng tới nó không, vì mình đã xoay đủ kiểu cả cách như của bạn sửa trên cũng đã thử không đc luôn.
Không biết có cách nào gán null vào vị trí cuối cùng không nhỉ, chắc bài này mình phải nghĩ cách dùng mảng xem sao. Cảm ơn bạn.
__________________
-_::Tin Học là chia sẻ ::_-
http://cnttk1a.hnsv.com
Chào mừng các bạn đến diễn đàn lớp tui!
Mr_Dolphin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-05-2008, 18:50   #4
Rìu Sắt Đôi
 
thienthan's Avatar
 
Tham gia: Nov 2007
Bài: 280
VZD: 4.091
Điểm: 74/60 bài viết
Send a message via Yahoo to thienthan
Default

Trích:
Mr_Dolphin View Post
Bạn có để ý code minh khi khai báo biến hàm có 1 biến là tam mà trong bài không dùng tới nó không, vì mình đã xoay đủ kiểu cả cách như của bạn sửa trên cũng đã thử không đc luôn.
Không biết có cách nào gán null vào vị trí cuối cùng không nhỉ, chắc bài này mình phải nghĩ cách dùng mảng xem sao. Cảm ơn bạn.
Bạn để ý phải dùng toán tử cộng chuỗi
PHP Code:
tmp=tmp+'cái gì đó' 
Trước tiên bạn phải gán.
PHP Code:
tmp=''//null 
Kí tự null có mã ascii là 0.
PHP Code:
char(0
thienthan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt
Trackbacks are Tắt
Pingbacks are Tắt
Refbacks are Tắt
Chuyển đến


Múi giờ GMT +7. Hiện tại là 00:54.


Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
Từ điển được cung cấp bởi VDict.com - Hosting được tài trợ bởi Rao vặt 123