PDA

View Full Version : Giải bài tập Pascal *D2T*



—¤÷¤* ߀ߵ *¤÷¤—
28-10-2011, 05:38 PM
Mấy hôm đầu học Pascal em làm được hầu hết các bài tập thầy giao, mấy bữa sau thì lại không làm được vì em không ôn lại lí thuyết nên chả làm đc bài trong khi nhiều bạn khác lại làm xong rồi. Mà hôm đó thầy còn bảo em "thử" làm bài đó coi, ai ngờ, chắc thầy thất vọng vì em lắm c:tire:. Hơi buồn nên em lập topic này nếu có bài khó nào thì mấy anh chị giải dùm em nhé

Bài này em giải mãi không được. Trên lớp em mới chỉ học "For ... to / downto ... do" thôi nên em không dám dùng "while ... do". Anh nào giải được bằng "For ... to / downto ... do" thì giúp em với
Bài 7 - trang 51 SGK lớp 11: Nhập từ bàn phím tuổi cha và con (hiện tại tuổi cha lớn hơn hai lần tuổi con và tuổi cha hơn tuổi con ít nhất là 25). Đưa ra màn hình câu trả lời cho câu hỏi "Bao nhiều năm nữa thì tuổi cha gấp đôi tuổi con?"
"Sáng 29/10/2011 em phải thực hành rồi." :nosebleed:

thanhkhoeo
28-10-2011, 06:32 PM
bài này bắt buộc dùng while ..do hoặc repeat ... until

em xem bài anh làm nhé




var t1, t2, i:byte;
begin
write (' nhập tuổi bố, con');
readln(t1,t2);
While t2*2<t1 do
begin
t1:=t1+1;
t2:=t2+1;
i:=i+1;
end;
Write (' so nam la', i+1);
readln;
end.

s2_Rain
29-10-2011, 09:23 AM
lên vn-zoom bạn :D
có ngay câu trả lời sau 5 p c:big_smile:

thanhkhoeo
29-10-2011, 05:38 PM
lên vn-zoom bạn :D
có ngay câu trả lời sau 5 p c:big_smile:

Sau 5 phút à bạn. Để mình thử xem sao nhé

—¤÷¤* ߀ߵ *¤÷¤—
29-10-2011, 07:35 PM
Ác, thầy có bài tính x^y với x và y nhập từ bàn phím. Ai viết dùm em chương trình lun với. Khó ác c:amazed:c:amazed:c:amazed:

Smileeeee
29-10-2011, 09:19 PM
Ác, thầy có bài tính x^y với x và y nhập từ bàn phím. Ai viết dùm em chương trình lun với. Khó ác c:amazed:c:amazed:c:amazed:

Hay thế. Tớ cũng thích làm pascal. Tớ làm bài này thế này, cậu xem lại xem có đc không
var x,y,i,S:integer;
begin
clrscr;
write('moi nhap x.y '); readln(x,y);
S:=1;
for i:=1 to y do S:=S*x;
write('x^y=',S:10);
readln
end.

thanhkhoeo
29-10-2011, 11:20 PM
Hay thế. Tớ cũng thích làm pascal. Tớ làm bài này thế này, cậu xem lại xem có đc không
var x,y,i,S:integer;
begin
clrscr;
write('moi nhap x.y '); readln(x,y);
S:=1;
for i:=1 to y do S:=S*x;
write('x^y=',S:10);
readln
end.

S:longint em

s integer thì đc mấy

Smileeeee
08-11-2011, 10:52 PM
Anh nào giúp em bài này với: in ra màn hình tất cả các số n tố từ 1-> 300. em cảm ơn trc :burn_joss_stick:

kylong
08-11-2011, 11:44 PM
Nay chỉ học C++ nên anh không nhớ rõ pascal lắm.Em thử cái này xem(Không biết cấu trúc có đúng không.Lâu ngày không học mà c:byebye:):
var n:integer;
begin
clrscr;
for i:=1 to 300 do
write(n:4);
readln
end.

thanhkhoeo
09-11-2011, 05:16 PM
var j:integer;
function nguyento(z:integer):boolean;
var i:integer;
begin
nguyento:=true;
for i:=1 to (sqrt(z)div 1) do
if z mod i=0 then nguyento:=false;
end;begin
clrscr;
for j:=1 to 300 do if nguyento(j) then
write(j:4);
readln
end.

Smileeeee
09-11-2011, 07:07 PM
var j:integer;
function nguyento(z:integer):boolean;
var i:integer;
begin
nguyento:=true;
for i:=1 to (sqrt(z)div 1) do
if z mod i=0 then nguyento:=false;
end;begin
clrscr;
for j:=1 to 300 do if nguyento(j) then
write(j:4);
readln
end.
Anh ơi em chưa học đến cái function vs lại em viết chương trình k chạy đc

panda205
09-11-2011, 10:08 PM
Nay chỉ học C++ nên anh không nhớ rõ pascal lắm.Em thử cái này xem(Không biết cấu trúc có đúng không.Lâu ngày không học mà c:byebye:):
var n:integer;
begin
clrscr;
for i:=1 to 300 do
write(n:4);
readln
end.

Hôm qua mình nhầm in các số từ 1 đến 300.Bài sửa lại đã test:

uses crt;
var n,i,j,m,k:integer;
begin
clrscr;
write('Nhap vao mot so n=');
readln(n);
writeln('Cac so nguyen to nho hon ',n,' la:');
for i:=1 to n do
begin
k:=0;
m:=round(sqrt(i));
for j:=1 to m do
if i mod j =0 then k:=k+1;
if k=1 then write(i:10);
end;
readln
end.

Smileeeee
10-11-2011, 06:52 AM
Hôm qua mình nhầm in các số từ 1 đến 300.Bài sửa lại đã test:

uses crt;
var n,i,j,m,k:integer;
begin
clrscr;
write('Nhap vao mot so n=');
readln(n);
writeln('Cac so nguyen to nho hon ',n,' la:');
for i:=1 to n do
begin
k:=0;
m:=round(sqrt(i));
for j:=1 to m do
if i mod j =0 then k:=k+1;
if k=1 then write(i:10);
end;
readln
end.

em cho chạy lại đc rồi anh ạ. nhưng em không hoêir vì sao khi k:=k+1 thì tới k=1 lại dừng lại? từ đầu đã là k=0 rồi mà.

kylong
10-11-2011, 08:45 AM
Muốn kiểm tra 1 số x có phải là số nguyên tố không thì ta kiểm tra xem trong khoảng từ 1 đến sqrt(x) có bao nhiêu ước của x.Nếu nó có 1 ước là 1 thì khẳng định số x là số nguyên tố.Do vậy trong bài này:
n-Số ngẫu nhiên nhập vào từ bàn phím
i-Biến chạy từ 1 đến n
j-Biến chạy từ 1 đến sqrt(i) để kiểm tra xem j có phải là ước của i không.
k-Biến đếm số ước của i.Giá trị ban đầu cho là 0.Nếu i chia hết cho j thì tăng lên 1.
Do j chạy từ 1 nên luôn có 1 ước là 1 ==>Khi k=1 thì khẳng định số đó là số nguyên tố và thoát ra ngoài thực hiện vòng lặp tiếp theo.