Mới làm cái này để tiện việc làm kiểm tra, mọi người xem giùm em coi nó có sai xót gì ko? cần rút gọn gì ko?
cái kết quả cuối cùng nó dư ra 1 khoảng trống mà ko bít là gì cả, rồi tìm kiếm độ dài chuỗi thì ra sai.
VD: chuỗi 10001 thì nó đếm đến 6.
Vì đây là ct nhỏ nên em làm biến hơi nhiều xíu để tiện việc viết ct.
So sánh giữa số thực với 0 hay 0.5 thì hình như pascal nhà bị lỗi ko so sánh được nên gán vào biến luôn.
p/s: chưa học nhiều nên làm dài.Code:program hesodem; uses crt; var kitu: array[1..1000] of char; kitu2: array[1..1000] of char; np,tp,tlp:string; n,i,pn,pn2,pn3,l:integer; so,k1,k2,ptp,ptp2,ptp3:real; key:char; begin clrscr; repeat write('Nhap vao 1 so: '); readln(so); pn:=trunc(so); ptp:=frac(so); i:=1; l:=1; k1:=0; k2:=0.5; pn2:=pn; while pn2>=1 do begin ptp2:=frac(pn2/2); pn2:=trunc(pn2/2); if ptp2=k2 then kitu[i]:='1' else if ptp2=k1 then kitu[i]:='0'; i:=i+1; end; l:=i; for n:=1 to i do insert(kitu[n],np,0); if ptp<>k1 then begin ptp3:=ptp; while ptp3<>k1 do begin pn3:=trunc(ptp3*2); ptp3:=frac(ptp3*2); if pn3=1 then kitu2[l]:='1' else if pn3=0 then kitu2[l]:='0'; l:=l+1; end; np:=np+'.'; for n:=1 to l do np:=np+kitu2[n]; end; writeln('doi so thap phan ',so:9:9,' sang he nhi phan la:'); writeln(np); write('Lam tiep hay ko?(Y/N): '); readln(key); until upcase(key)='N'; end.


LinkBack URL
About LinkBacks

Trả Lời Với Trích Dẫn


!

, mình cảm ơn bạn rất nhiều 
