Viết chương trình tính tổng dãy n số nguyên với n được nhập từ bàn phím
Đã gửi 09-05-2013 - 12:46
Bài 1: Dãy số hạnh phúc
- Nếu số vừa nhập là 307, thì in ra màn hình “307 là số nguyên tố”.
Đã gửi 21-11-2013 - 22:36
Bài 1: Đầu tiên xây dựng mảng số nguyên tố: prime[i] để kiểm tra xem i có phải là số nguyên tố? Có thể cài Eratosthene hoặc trâu đều được, với N<=1000 đây không phải vấn đề. Lập mảng b[i] chứa các số nguyên tố từ 1 đến N. Mảng c[i] là mảng chứa các số là ước của N. Nhận thấy dãy số kết quả chính là tổng hợp lại của 2 mảng này. Mảng b[i] thì dễ cài đặt rồi. Mảng c[i], để ý tất cả các số trong mảng này đều phải là ước của N. Chỉ cần liệt kê tất cả các ước của N là xong mảng c. 2 mảng b,c nên được cài khéo léo sao cho chúng có thứ tự tăng dần Cuối cùng ta trộn hai mảng lại, thuật toán tương tự MergeSort (Cho biến i chạy dọc mảng b, biến j chạy dọc mảng c. Nếu a[i]b[j] thì tăng j lên 1. Nếu a[i]=b[j] thì tăng cả i và j lên 1. Lưu lại vào mảng kết quả. Viết lại mảng kết quả theo chỉ số giảm dần -> done! Độ phức tạp: O(N).
Đã gửi 21-11-2013 - 22:44
mấy bài này lên cấp 3 rồi mà vẫn còn chẳng hiểu cái gì? trừ mấy bạn ở khối chuyên tin học sâu hơn
Đã gửi 26-06-2021 - 22:59
Bài 1 : Hướng dẫn :Thực ra (nếu để ý kĩ) đây là dãy số bao gồm những số nguyên tố nhỏ hơn hoặc bằng n và ước của n . code: program bt1; uses crt; function kt(n:integer):boolean; var i:integer; a:boolean; begin a:=true; for i:=2 to n-1 do if n mod i=0 then a:=a and false; if n<2 then kt:=false else kt:=a; end; var n,i:integer; begin clrscr; write('nhap n:'); readln(n); for i:=n downto 1 do if (kt(i)) or (n mod i=0) then write(i:4); readln; end.
Học , học nữa , học mãi Luôn không ngừng cố gắng để đạt thành quả
Đã gửi 26-06-2021 - 23:05
Bài 2 nha : Bài này cứ cho chạy từ 1-n rồi kiểm tra xem nó có vừa là số nguyên tố vừa là ước của n ko la đc program bt1; uses crt; var a,i,b,j,d,n:longint; c:array[1..10000]of longint; function kt(n:longint):boolean; var i:longint; a:boolean; begin a:=true; for i:=2 to n-1 do if n mod i =0 then a:=a and false; if n<2 then kt:=false else kt:=a; end; function t(n:longint):longint; var i:longint; begin t:=0; if (kt(n)) then t:=n else for i:=2 to n do if ((n mod i=0)and(kt(i))) then t:=t+i; end; begin clrscr; writeln('a)'); write(' Nhap n= '); readln(n); writeln(' So nguyen to rut gon cua ',n,' la ',t(n)); writeln('b)'); write('nhap a:'); readln(a); write('nhap b:'); readln(b); j:=0; d:=0; for i:= a to b do if t(n)=t(i) then begin inc(d); inc(j); c[j]:=i; end; writeln('co ',d,' so co cung sntrg la:'); for i:=1 to d do write(c[i]:6); readln; end.
Học , học nữa , học mãi Luôn không ngừng cố gắng để đạt thành quả
Đã gửi 26-06-2021 - 23:07
Bài 3: Code: program bt1; uses crt; var st:string; v,i,t,s,p,w:integer; begin clrscr; write('nhap vao xau:'); readln(st); t:=0; s:=1; for i:=1 to length(st) do begin v:=i+1; while st[v]=st[i] do begin inc(v); inc(s); end; if t t:=s; s:=1; end; write(t:10); s:=0; p:=0; for i:=1 to length(st) do begin w:=0; v:=i+1; while (w<=1) or (st[v]=st[i]) do begin inc(s); inc(v); if st[v]<>st[i] then w:=w+1; end; if p p:=s; s:=0; w:=0; end; write(p:10); readln; end.
Học , học nữa , học mãi Luôn không ngừng cố gắng để đạt thành quả
Đã gửi 27-06-2021 - 15:54
Bài 4 mk chưa học tệp nên làm mảng xâu nha program bt1; uses crt; var a:array[1..10000] of string; d,i,n,j:integer; begin clrscr; write('nhap vao so luong xau:'); readln(n); for i:=1 to n do begin write('nhap xau thu ',i,' :'); readln(a[i]); end; for i:=1 to n do begin d:=0; for j:=1 to n do if a[i]=a[j] then d:=d+1; if d=1 then writeln(a[i]); end; readln; end.
Học , học nữa , học mãi Luôn không ngừng cố gắng để đạt thành quả
Đã gửi 27-06-2021 - 16:13
cau 12 : code: program bt1; uses crt; var n,i:integer; function kt(n:integer):boolean; var a:boolean; i:integer; begin a:=true; for i:=2 to n-1 do if n mod i=0 then a:=a and false; if n<2 then kt:=false else; kt:=a; end; begin clrscr; write('nhap n:'); readln(n); if kt(n) then write(n,' la so nguyen to') else begin write(n,' = '); i:=2; while n>1 do if n mod i=0 then begin write(i); n:=n div i; if n>1 then write(' . '); end else i:=i+1; end; readln; end.
Học , học nữa , học mãi Luôn không ngừng cố gắng để đạt thành quả
Đã gửi 27-06-2021 - 16:16
Mấy bài tệp để mk nghiên cứu đã chưa học
Học , học nữa , học mãi Luôn không ngừng cố gắng để đạt thành quả
Đã gửi 27-06-2021 - 16:26
b9: code: program bt1; uses crt; var a:array[1..50] of integer; i,n,d1,d2,d3:integer; function kt(n:integer):boolean; var a:boolean; i:integer; begin a:=true; for i:=2 to n-1 do if n mod i=0 then a:=a and false; if n<2 then kt:=false else kt:=a; end; begin clrscr; write('nhap vao so phan tu cua mang:'); readln(n); for i:=1 to n do begin write('nhap a[',i,']:'); readln(a[i]); end; d1:=0; d2:=0; d3:=0; for i:=1 to n do begin if a[i] mod 2=0 then d1:=d1+1 else d2:=d2+1; if kt(a[i]) then d3:=d3+1; end; write(d1:4,d2:4,d3:4); readln; end.
Học , học nữa , học mãi Luôn không ngừng cố gắng để đạt thành quả
Đã gửi 27-06-2021 - 16:46
Xử lí tại đầu vào sẽ tối ưu hơn >>tiết kiệm biến mảng a
Đã gửi 27-06-2021 - 20:56
Thk bạn góp ý (mặc dù mình cx ko hiểu lắm) Mà sao bạn theo dõi mình à sao trích cả hai bài rồi
Học , học nữa , học mãi Luôn không ngừng cố gắng để đạt thành quả
Đã gửi 27-06-2021 - 21:35
sửa lại : program bt1; uses crt; var a:integer; i,n,d1,d2,d3:integer; function kt(n:integer):boolean; var a:boolean; i:integer; begin a:=true; for i:=2 to n-1 do if n mod i=0 then a:=a and false; if n<2 then kt:=false else kt:=a; end; begin clrscr; write('nhap vao so phan tu cua mang:'); readln(n); for i:=1 to n do begin write('nhap a[',i,']:'); readln(a); if a mod 2=0 then d1:=d1+1 else d2:=d2+1; if kt(a) then d3:=d3+1; end; write(d1:4,d2:4,d3:4); readln; end. >>Thấy trong phần 'có gì mới ' >>là hs chuyên tin chơi theo hệ tối ưu (2k4) Bài viết đã được chỉnh sửa nội dung bởi Lykan 11: 27-06-2021 - 21:48
Đã gửi 27-06-2021 - 22:40
hello a nha (anh bằng tuổi chị em haha) ! em 2k7(Lớp 8->9)! em cx sắp thi tin! em hiểu rồi ! anh ko sử dụng mảng mà dùng biến thường rồi kiểm tra luôn ! Thk a nha ! Bài viết đã được chỉnh sửa nội dung bởi Duongdz2k7: 28-06-2021 - 16:17
Học , học nữa , học mãi Luôn không ngừng cố gắng để đạt thành quả
Đã gửi 28-06-2021 - 09:23
em chuẩn bị thi tin học trẻ à
Đã gửi 28-06-2021 - 10:02
Vâng ạ ! Năm nay dịch nó cho thi muộn ! Vẫn chưa thi Mà nó thông báo chọn em đi thi trước có 1 tuần nên mới ôn được chút !
Học , học nữa , học mãi Luôn không ngừng cố gắng để đạt thành quả
Đã gửi 28-06-2021 - 16:21
Anh ơi trong free pascal có cho con trỏ file xuống dòng được ko ạ ! em làm thế này : writeln(f,sv) nó báo không đc dùng writeln !
Học , học nữa , học mãi Luôn không ngừng cố gắng để đạt thành quả
Đã gửi 28-06-2021 - 17:18
xuống dòng bt a gửi ảnh đi, anh xem
Đã gửi 28-06-2021 - 22:25
Em không gửi được ảnh , nó bảo định dạng file hình ảnh không sử dụng được . Tại em mới học file nên không hiểu Em xem trên mạng nó bảo : 3.2.3. Thủ tục Writeln Cú pháp: Writeln(F, x); Chức năng: Ghi giá trị x vào file ở vị trí con trỏ file. Kết thúc thủ tục, con trỏ file sẽ chuyển về đầu dòng sau. Nhưng em làm nó báo lỗi là Error : Can't use readln or writeln on typed file Là sao ạ ! Em xuất kết quả ra file ở ổ C:\ Hay là phải xuất kết quả ra file trong free pascal hả anh ? Bài viết đã được chỉnh sửa nội dung bởi Duongdz2k7: 28-06-2021 - 22:32
Học , học nữa , học mãi Luôn không ngừng cố gắng để đạt thành quả
Đã gửi 28-06-2021 - 22:30
Đây là bài của em ! program bt1; uses crt; type st20=string[20]; st10=string[10]; sinhvien=record ht:st20; ns,qq:st10; dtb:real; xl:char; end; var f:file of sinhvien; fn:string; sv:sinhvien; bht:st20; i:word; begin clrscr; write('nhap vao ten file muon luu :'); readln(fn); assign(f,fn); rewrite(f); i:=1; writeln('nhap thong tin ca nhan cua cac sinh vien :'); repeat write('ho va ten cua sinh vien thu ',i,' :'); readln(bht); if bht<>'' then begin sv.ht:=bht; write('nhap ngay thg (dd/yy/www) :'); readln(sv.ns); write('nhap vao que quan :'); readln(sv.qq); write('diem trung binh :'); readln(sv.dtb); if sv.dtb<5 then sv.xl:='D' else if sv.dtb<6.5 then sv.xl:='C' else if sv.dtb<8 then sv.xl:='B' else sv.xl:='A'; write(f,sv); <==== chỗ này em chuyển thành writeln(f,sv); nó báo lỗi là:Error:Can't use readln or writeln on typed file (Tại khi in ra kết quả nó cứ in trên 1 dòng nên không đẹp ) end; inc(i); until bht=''; close(f); readln; end. >>Mà anh ơi thi tin THCS có cần học phần file không ạ ! Tại còn ít thời gian nên em chỉ ôn những mảng thi cho hiệu quả thôi ạ! Bài viết đã được chỉnh sửa nội dung bởi Duongdz2k7: 28-06-2021 - 23:06
Học , học nữa , học mãi Luôn không ngừng cố gắng để đạt thành quả |