Ặ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^3/3!)+(x^5/5!)-........ Giúp em nhá. Thanks nhiều
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.
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.
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:
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!
Tui làm nốt bài 2 cho: 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:=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:
Đú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
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
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 ::(
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. 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.
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 ( 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ả..... ::(
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ể.
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ớ ^^.
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
"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 à....
Ặ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ì ) Đạ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 đó .
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;