Theme editor

Giải bài tập Pascal *D2T*

—¤÷¤* ߀ߵ *¤÷¤—

Vi phạm Nội Quy
Tham gia
12/7/11
Bài viết
117
Điểm tương tác
11
Điểm
0
Nơi ở
Thanh Hóa City
Thread owner
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. . 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?"
:nosebleed:
 
bài này bắt buộc dùng while ..do hoặc repeat ... until

em xem bài anh làm nhé

Mã:
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.
 
Á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.
 
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
 
Sửa lần cuối:
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:
 
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.
 
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.
 
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
 
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.
 
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à.
 
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.
 
Back
Top