Mọi người đang học lập trình nên mình lập topic này , mong mỗi ngày làm thử 1 vài bài tập Pascal .. chủ yếu để mọi người học tốt hơn thui.... và cũng để đưa ra đoạn code hoàn thiện nhất .. Khuyến khích mọi người đưa ra đoạn code hoàn thiện nhất, cho tất cả các trường hợp
-------------------------------------------------------------- Ngày đầu tiên vài bài đơn giản thôi 1. Nhập vào 1 ngày tháng năm trong năm và cho biết đó là ngày thứ mấy trong năm (STT của ngày đó). 2. Lập chương trình đọc số có 3 chữ số
Mong mọi người hưởng ứng... Có bài tập nào hay thì post lên cho anh em cùng giải chơi
Số lần được cảm ơn :Message reputation : 100% (1 vote)
Được sửa bởi Regulus ngày Sun Dec 13, 2009 9:56 pm; sửa lần 1.
Sun Dec 13, 2009 9:54 pm
Banned User
xiao_yan69
Giới tính :
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生
Tiêu đề: Re: Mỗi ngày 1 vài bài tập Pascal :D:D
trời hai bài mà bạn leo đưa ra yến thấy có đơn giản zì đâu mà leo hô là đơn giản nhỉ! hichic! có bạn nào giải được share cho y với nèo bà con ơi!
Fri Jan 01, 2010 12:45 am
Thành Viên Chuẩn
BloodDragon
Giới tính :
Đến từ : Dak Lak
Join : 11/11/2009
Bài gửi : 20
HUMOR : choi game
Tiêu đề: Re: Mỗi ngày 1 vài bài tập Pascal :D:D
Gần cả tháng ko ai trả lời chắc ko ai ủng hộ, vậy tui làm câu 1:
Code:
program STTNgay; var sn:array[1..12] of integer; d,m,y,i:byte; stt:integer; uses crt; begin clrscr; sn[1]:=31;sn[3]:=31;sn[5]:=31;sn[7]:=31;sn[8]:=31;sn[10]:=31;sn[12]:=31; sn[4]:=30;sn[6]:=30;sn[9]:=30;sn[11]:=30; if y mod 4=0 then sn[2]:=29 else sn[2]:=28; while (y=0) do write('nhap nam:');readln(y); while (m=0)or(m>12) do write('nhap thang:');readln(m); while d>sn[m] do write('nhap ngay:');readln(d); stt:=0; if m=1 then writeln('stt cua ngay ',d,'/',m,'/',y,'trong nam la:',d) else begin for i:=1 to m do stt:=stt+sn[m]; writeln('stt cua ngay ',d,'/',m,'/',y,'trong nam la:',stt+d); end; readln; end.
có gì sai thì sửa dùm nha. Còn câu 2 giải thích rõ yêu cầu đi, lấy VD luôn
Fri Jan 01, 2010 3:15 pm
Tổng điều hành
Regulus™
Giới tính :
Đến từ : ...
Join : 06/11/2009
Bài gửi : 758
HUMOR : Nghe nhạc.. Computer
Thú cưng .:
Tiêu đề: Re: Mỗi ngày 1 vài bài tập Pascal :D:D
hihihi... thank U ban da ung ho hix... Ko o Tp,ko co may, chua test dc .. de len tp test thu
Bai 2 la`: Vi du nhu nhap 234 se xuat ra man hinh la hai tram ba muoi bon Nhap vao 24 se xuat ra hai muoi bon ...
Hihi.. ban nen chu y truong hop so chinh giua =0 va khac 0... --------------------------------------- Sr: dang o wan , lam bieng down cai unikey, vai bua ve nha sua
Fri Jan 01, 2010 8:31 pm
Thành Viên Chuẩn
BloodDragon
Giới tính :
Đến từ : Dak Lak
Join : 11/11/2009
Bài gửi : 20
HUMOR : choi game
Tiêu đề: Re: Mỗi ngày 1 vài bài tập Pascal :D:D
đây là bài 2:
Code:
program DocSo; var ten:array[1..9] of string; n:integer; a,b,c:byte; uses crt; procedure docten(b,c:integer); var t:array[1..9] of string; begin t[1]:='mot';t[2]:='hai';t[3]:='ba';t[4]:='bon':t[5]:='nam'; t[6]:='sau';t[7]:='bay';t[8]:='tam';t[9]:='chin'; if b=0 then if c=0 then writeln() else writeln(t[c]) else if b=1 then if c=0 then writeln('muoi') else writeln('muoi ',t[c]) else if c=0 then writeln(t[b],' muoi') else writeln(t[b],' muoi ',t[c]); end; begin clrscr; ten[1]:='mot';ten[2]:='hai';ten[3]:='ba';ten[4]:='bon':ten[5]:='nam'; ten[6]:='sau';ten[7]:='bay';ten[8]:='tam';ten[9]:='chin'; while(n<0)or(n>1000) do write('nhap so can doc :');readln(n); a:=n div 100; b:=(n div 10)-a*10; c:=n-a*100-b*10; write('cach doc la :'); if n=0 then writeln('khong') else if a=0 then docten(b,c) else if(b=0)and(c=0) then writeln(ten[a],' tram') else if b=0 then writeln(ten[a],' tram le ',ten[c]) else writeln(ten[a],' tram ',ten[b],' muoi ',ten[c]); readln; end.
nếu test báo lỗi thì đọc dùm tui nó ghi gì để còn bít mà sửa hoặc sửa dùm tui luôn
Fri Jan 01, 2010 9:45 pm
Thành Viên Xây Dựng
sherry01
Giới tính :
Đến từ : nam dinh
Join : 12/11/2009
Bài gửi : 134
HUMOR : nothing
Tiêu đề: Re: Mỗi ngày 1 vài bài tập Pascal :D:D
Ban co the gui duong link de de test dc ko? Luoi chep wa
Fri Jan 01, 2010 10:15 pm
Thành Viên Chuẩn
BloodDragon
Giới tính :
Đến từ : Dak Lak
Join : 11/11/2009
Bài gửi : 20
HUMOR : choi game
Tiêu đề: Re: Mỗi ngày 1 vài bài tập Pascal :D:D
đường link là sao bài này tui tự viết moà. với lại copy là được rùi chép làm gì
Sat Jan 02, 2010 9:51 am
Thành Viên Xây Dựng
sherry01
Giới tính :
Đến từ : nam dinh
Join : 12/11/2009
Bài gửi : 134
HUMOR : nothing
Tiêu đề: Re: Mỗi ngày 1 vài bài tập Pascal :D:D
tui biet rui nhung ma co the dat them duong linh ve cho de ko. chac la ko hieu y tui rui
Sat Jan 02, 2010 6:48 pm
Thành Viên Chuẩn
BloodDragon
Giới tính :
Đến từ : Dak Lak
Join : 11/11/2009
Bài gửi : 20
HUMOR : choi game
Tiêu đề: Re: Mỗi ngày 1 vài bài tập Pascal :D:D
ý bạn là upload file *.pas luôn ấy hả, cái này tui hôk bik để thử
Sat Jan 02, 2010 9:01 pm
Tổng điều hành
Regulus™
Giới tính :
Đến từ : ...
Join : 06/11/2009
Bài gửi : 758
HUMOR : Nghe nhạc.. Computer
Thú cưng .:
Tiêu đề: Re: Mỗi ngày 1 vài bài tập Pascal :D:D
Bài 1: Bạn khai báo mảng bị sai... Phần kiểm tra số liệu nhập vào bạn nên dùng repeat .. until Ko thể dùng while khi chưa có một giá trị cụ thể nhập vào... Thuật toán cũng sai... ... nhập 31/12/2009 ra 402 ngày .. hix hix
Mình sửa khúc dưới bài của bạn thành code dưới.. chạy ok
Mọi người nên chú ý chỗ này nữa.... phần uses crt; phải đặt đầu chương trình Sau program (nếu có) và trước type, var ... Nếu ko sẽ báo lỗi đó
Code:
program STTNgay; uses crt; type mang=array[1..12] of integer; var sn:mang; d,m,y,i:byte; stt:integer;
begin clrscr; sn[1]:=31;sn[3]:=31;sn[5]:=31;sn[7]:=31;sn[8]:=31;sn[10]:=31;sn[12]:=31; sn[4]:=30;sn[6]:=30;sn[9]:=30;sn[11]:=30; if y mod 4=0 then sn[2]:=29 else sn[2]:=28; repeat write('Nhap ngay ' );readln(d); write('Nhap thang ' );readln(m); write('Nhap nam ');readln(y); until (d<=sn[m]) and (d>0) and (m>0) and (m<=12); stt:=0; for i:=1 to m-1 do stt:=stt+sn[i]; stt:=stt + d; write('So thu tu cua ngay tren la ',stt); readln; end.
Bài 2:
Code:
uses crt; type vitri=array[1..3] of integer; so=array[1..9] of string; var s,dem,i:integer; Vt:vitri; doc:so; procedure docso(n:integer); begin doc[1]:='mot'; doc[2]:='hai'; doc[3]:='ba'; doc[4]:='bon'; doc[5]:='nam'; doc[6]:='sau'; doc[7]:='bay'; doc[8]:='tam'; doc[9]:='chin'; write(doc[n]); end; begin clrscr; repeat write('Nhap so can doc ');readln(s); until (s>=100) and (s<=999); for i:=1 to 3 do begin vt[4-i]:=s mod 10; s:=s div 10; end; docso(VT[1]); write(' tram '); if VT[2]=1 then write('') else docso(VT[2]); if VT[2]=0 then write('le ') else write(' muoi ');
docso(VT[3]);
readln; end.
----------------------------------------------- P/s : Các bạn ở trên chỉ cần copy toàn bộ code paste vào notepad rồi save lại với đuôi .pas là vào pascal mở bình thường ah` Cần chi phải up cái file .pas mấy k cho mắc công :
Được sửa bởi Regulus ngày Sat Jan 02, 2010 9:28 pm; sửa lần 1.
Sat Jan 02, 2010 9:21 pm
Tổng điều hành
Regulus™
Giới tính :
Đến từ : ...
Join : 06/11/2009
Bài gửi : 758
HUMOR : Nghe nhạc.. Computer
Thú cưng .:
Tiêu đề: Re: Mỗi ngày 1 vài bài tập Pascal :D:D
Còn đây là đề thi học kì mấy năm trước của trường mình nè ...
3. Nhập vào chuỗi Họ và tên... In ra màn hình Họ và tên. VD: Họ và tên: Re gu lus ----> xuất ra màn hình : Họ : Re gu Tên: Lus 4. Nhập vào một dãy số, sắp xêp cho chúng tăng dần (Sử dụng ít nhất một thủ tục)
Sat Jan 02, 2010 10:46 pm
Thành Viên Chuẩn
BloodDragon
Giới tính :
Đến từ : Dak Lak
Join : 11/11/2009
Bài gửi : 20
HUMOR : choi game
Tiêu đề: Re: Mỗi ngày 1 vài bài tập Pascal :D:D
Tui làm bài 4:
Code:
progam SapXep; uses crt; type day=array[1..200] of real; var a:day; n,i,j:byte; procedure doicho(a,b:real); var c:real; begin c:=a; a:=b; b:=c; end; begin clrscr; write('nhap so luong cac so cua day:');readln(n); for i:=1 to n do begin write('nhap so thu ',i,':');readln(a[i]); end; for i:=1 to n do for j:=1 to n-1 do if a[j]>a[j+1] then doicho(a[j],a[j+1]); writeln('Ket qua la sau khi sap xep la:'); for i:=1 to n-1 do write(a[i]:0:2,' < '); writeln(a[n]:0:2); readln; end.
Regulus:theo tui nhớ thì khai báo mảng có 2 cách chứ đâu nhất thiết phải có type, với lại bài 2 yêu cầu đọc số từ 0 tới 999 mà chứ đâu phải từ 100-999
Trích dẫn :
Vi du nhu nhap 234 se xuat ra man hinh la hai tram ba muoi bon Nhap vao 24 se xuat ra hai muoi bon
Sat Jan 02, 2010 11:54 pm
Tổng điều hành
Regulus™
Giới tính :
Đến từ : ...
Join : 06/11/2009
Bài gửi : 758
HUMOR : Nghe nhạc.. Computer
Thú cưng .:
Tiêu đề: Re: Mỗi ngày 1 vài bài tập Pascal :D:D
hihihi... Câu 2 đo đề bài kêu chỉ đọc số 3 chữ số thì mình giới hạn lun cho gọn... ăn gian xíu ý mà ... Còn mình coi lại rồi, kiểu String mới có thể khai báo trực tiếp và gián tiếp, Mảng phải sử dụng kiểu khai báo gián tiếp ah... test rồi nó báo lỗi ---------------------------------------------------- Bài 4 lúc đầu mình cũng nghĩ theo cách đó nhưng sao cái thủ tục làm theo biến tạm ko thể đổi chỗ được 2 số, test trong pascal nó hok cho... hix hix... ko chịu đổi nên chương trình chạy bị sai...
Do đề chỉ yêu cầu cần làm ít nhất một thủ tục nên mình làm thử ... Bạn nào sửa dc vấn đề trên thì post lên cho a e nhan ...
Bài 4 (tested)
Code:
uses crt; type mang=array[1..100] of integer; var day:mang; n,i,j,tam:integer; procedure Nhaplieu; begin write('Nhap so phan tu cua mang ');readln(n); for i:=1 to n do begin write('Nhap gia tri phan tu thu ',i, ' = '); readln(day[i]); end; end; procedure Xuly; begin for i:=1 to n do for j:=i to n do if day[i]>day[j] then begin tam:=day[i]; day[i]:=day[j]; day[j]:=tam; end; for i:=1 to n do write(day[i],' '); end;
begin clrscr; Nhaplieu; Xuly; readln; end.
Fri Jan 08, 2010 12:18 pm
Thành Viên Chuẩn
BloodDragon
Giới tính :
Đến từ : Dak Lak
Join : 11/11/2009
Bài gửi : 20
HUMOR : choi game
Tiêu đề: Re: Mỗi ngày 1 vài bài tập Pascal :D:D
Vừa cài Pascal và thử lại thì thấy bài nào mình làm cũng sai bét quyết định sửa lại và test thấy cũng được
đây bài 1:
Code:
program STTNgay; var sn:array[1..12] of integer; d,m,y,i:byte; stt:integer; uses crt; begin clrscr; sn[1]:=31;sn[3]:=31;sn[5]:=31;sn[7]:=31;sn[8]:=31;sn[10]:=31;sn[12]:=31; sn[4]:=30;sn[6]:=30;sn[9]:=30;sn[11]:=30; if y mod 4=0 then sn[2]:=29 else sn[2]:=28; while (y=0) do write('nhap nam:');readln(y); while (m=0)or(m>12) do write('nhap thang:');readln(m); while d>sn[m] do write('nhap ngay:');readln(d); stt:=0; if m=1 then writeln('stt cua ngay ',d,'/',m,'/',y,'trong nam la:',d) else begin for i:=1 to m do stt:=stt+sn[m]; writeln('stt cua ngay ',d,'/',m,'/',y,'trong nam la:',stt+d); end; readln; end.
Bài 2:
Code:
program DocSo; uses crt; var ten:array[1..9] of string; n:integer; a,b,c:byte; procedure docten(b,c:integer); var t:array[1..9] of string; begin t[1]:='mot';t[2]:='hai';t[3]:='ba';t[4]:='bon';t[5]:='nam'; t[6]:='sau';t[7]:='bay';t[8]:='tam';t[9]:='chin'; if b=0 then if c=0 then writeln else writeln(t[c]) else if b=1 then if c=0 then writeln('muoi') else if c=5 then writeln('muoi lam') else writeln('muoi ',t[c]) else if c=0 then writeln(t[b],' muoi') else if c=5 then writeln(t[b],' muoi lam') else writeln(t[b],' muoi ',t[c]); end; begin repeat clrscr; ten[1]:='mot';ten[2]:='hai';ten[3]:='ba';ten[4]:='bon';ten[5]:='nam'; ten[6]:='sau';ten[7]:='bay';ten[8]:='tam';ten[9]:='chin'; n:=9999; while(n<0)or(n>1000) do begin write('nhap so can doc :');readln(n);end; a:=n div 100; b:=(n div 10)-a*10; c:=n-a*100-b*10; write('cach doc la :'); if n=0 then writeln('khong') else if a=0 then docten(b,c) else if(b=0)and(c=0) then writeln(ten[a],' tram') else if b=0 then writeln(ten[a],' tram le ',ten[c]) else if (b=1)and(c=0)then writeln(ten[a],' tram muoi') else if (b=1)and(c=5) then writeln(ten[a],' tram muoi lam') else if c=5 then writeln(ten[a],' tram ',ten[b],' muoi lam') else writeln(ten[a],' tram ',ten[b],' muoi ',ten[c]); writeln('ban esc de thoat-phim bat ky de thu lai'); until ord(readkey)=27; end.
Bài 4:
Code:
program SapXep; uses crt; type day=array[1..200] of real; var a:day; n,i,j:byte; c:real; procedure xuat(a:day;n:byte); var i:byte; begin for i:=1 to n-1 do write(a[i]:0:2,' < '); writeln(a[n]:0:2); end; begin repeat i:=0;j:=0;n:=0; clrscr; write('nhap so luong phan tu cua day:');readln(n); for i:=1 to n do begin write('nhap so thu ',i,':');readln(a[i]); end; for i:=1 to n do for j:=1 to n-1 do if a[j]>a[j+1] then begin c:=a[j]; a[j]:=a[j+1]; a[j+1]:=c; end; writeln('Ket qua la sau khi sap xep la:'); xuat(a,n); writeln('nhan esc de thoat-phim bat ky de thu lai'); until ord(readkey)=27; end.
thấy hình như topic này chìm nghỉm lun rùi sao chỉ có tui nói 1 mình
Sun Jan 10, 2010 2:10 pm
Thành Viên Chuẩn
nganweed
Giới tính :
Đến từ : Bến Tre
Join : 11/11/2009
Bài gửi : 42
HUMOR : Nghe nhạc, du lịch
Tiêu đề: Hải ơi,giúp mình với, gấp gấp!!!
Hải ơi, Ngân gặp nhiều rắc rối về các bài tập Mảng hôm qua Hải đưa rồi, giúp Ngân với! Thứ nhất, bài 2: đếm số nguyên tố đó, Hải giải thích cho Ngân cái ý tưởng thuật toán số nguyên tố đi, trong sách có mà Ngân đọc chả hiểu gì hêt! Thứ hai là bài 4: số hòan thiện đo Hải! Tranh thủ post reply cho Ngân và các bạn tham khảo nha! Thank Hải nhiều nhiều!^^
Sun Jan 10, 2010 9:19 pm
IT Pro
qphuong07
Giới tính :
Đến từ : dong nai
Join : 06/11/2009
Bài gửi : 677
HUMOR : Ngủ là ok!!!
Thú cưng .:
Tiêu đề: Re: Mỗi ngày 1 vài bài tập Pascal :D:D
Bài này Ngân hỏi Hải định để cho Hải trả lời nhưng các vấn đề này thì P cũng biết thấy Ngân cần gấp nên P xin trả lời: Bài 2:sài chương trình con để kiểm tra số nguyên tố đó rùi cho chương trình này chạy trong mảng kiểm tra trong mảng có số nguyên tố ko nếu có thì biến đếm sẽ đc cộng thêm một Bài 4:bài này sử dụng chương trình con snt với chương trình con sht luôn cũg ktra trong mang có hay ko nếú có thì xuất giá trị đó ra
Sun Jan 10, 2010 10:18 pm
Thành Viên Chuẩn
nganweed
Giới tính :
Đến từ : Bến Tre
Join : 11/11/2009
Bài gửi : 42
HUMOR : Nghe nhạc, du lịch
Tiêu đề: Cám ơn Phương nhiều, cho Ngân hỏi tí nữa nha!
Phương viết cho Ngân tham khảo chương trình số nguyên tố với số hoàn thiện đi. Cái quan trọng là Ngân không hiểu ý tưởng tìm ra số nguyên tố và số hoàn thiện á! hhihi, hơi bị dở í mà! Viết kĩ kĩ tí nha! Giúp Ngân nha, cám ơn nhiều!!!!
Sun Jan 10, 2010 11:36 pm
Tổng điều hành
Regulus™
Giới tính :
Đến từ : ...
Join : 06/11/2009
Bài gửi : 758
HUMOR : Nghe nhạc.. Computer
Thú cưng .:
Tiêu đề: Re: Mỗi ngày 1 vài bài tập Pascal :D:D
hii :d
Mấy bài tập hồi bữa nè ngân.... Chưa đầy đủ sẽ cập nhật thêm nhưng test ok hết rùi... :d Làm biếng chia ra từng bài nên gộp tất cả vào 1 bài :d các phần đã làm: (tên CT con) Insonguyentodautien; Insohoanthiendautien; UCLNmang; Amduongdautien; tongcacsodaule; Sapxeptangdan; .......................... Ngân xem thuật toán tìm số nguyên tố với số hoàn thiện trong đó y :d hem bik ghi sao
link down đề hồi bữa : http://cid-6978eb24cbc81b3a.skydrive.live.com/self.aspx/CNTT%20K35/F5/BT%20M%E1%BA%A2NG.pdf
Số lần được cảm ơn :Message reputation : 100% (1 vote)
Mon Jan 11, 2010 9:37 pm
Thành Viên Chuẩn
nganweed
Giới tính :
Đến từ : Bến Tre
Join : 11/11/2009
Bài gửi : 42
HUMOR : Nghe nhạc, du lịch
Tiêu đề: Re: Mỗi ngày 1 vài bài tập Pascal :D:D
cám ơn Hải nhiều hén! Hi vọng mai thi sẽ tốt, trót lọt!!!hihi. Chúc Hải và mọi người thi tôt! :idea: