PDA

View Full Version : Giúp em bài tập pascal với ( em cần gấp )



cattim1987
26-12-2009, 09:44
Em có 1 số bài tập nhưng làm trên máy tính vẫn sai. Làm giúp em với

1. Vừa gà + chó : 100 chân
tổng : 36 con
hỏi có ? gà ? chó

2. Viết phương trình tổ hợp chập k của n với n và k được nhập từ bàn phím

3. Viết phương trình liệt kê tất cả các số nguyên tố từ 3 đến n , n lón hơn hoặc bằng 3 và n được nhập từ bàn phím

Em cảm ơn các anh chị nhiều

nhokdragon94
26-12-2009, 14:01
Bài 1: Zô mấy topic trên mà coi(chỗ lưu ý hay thông báo đó)
Bài 2:chả hỉu đề
Bài 3:
var
begin
readln(n);
for i:=1 to n do
begin
d:=0;
for j:=2 to i div 2 do
If i mod j=0 then d:=d+1;
If d=0 then write(i:4);
end;
readln;
end.

QuyNam
26-12-2009, 16:34
bài 1



uses crt;
var i:byte;
begin
clrscr;
i:=1;
while i*2+(36-i)*4<>100 do inc(i);
writeln('ga : ',i,' va cho : ',36-i);
readln;
end.


bài 2



uses crt;
var a:array[0..100,0..100] of integer;
i,j,k,n:byte;
begin
clrscr;
write('nhap k,n : ');readln(k,n);
for i:=0 to n do a[i,0]:=1;
for i:=1 to n do
for j:=1 to i do a[i,j]:=a[i-1,j]+a[i-1,j-1];
writeln('ket qua : ',a[n,k]);
readln;
end.


bài này có 2 cách giải, ở đây mình dùng QHĐ, còn một cách khác là đệ quy

bài 3 : nhocdragon94 giải vậy là ổn rồi

cattim1987
26-12-2009, 19:10
Cám ơn 2 bạn đã giúp đỡ mình rất nhiều , mình mới học pascal có 2 buổi nên chưa hiểu lắm :D

nhokdragon94
26-12-2009, 19:39
Ẹc học mới 2 buổi mà qua lặp for roài àk :-?,bạn học nhanh zậy
Kòn bài 2 học mảng nữa,pó tay

[=========> Bổ sung bài viết <=========]

http://ddth.com/showthread.php?t=146930 Bài 1 đó

QuyNam
26-12-2009, 21:29
phải công nhận là bạn học rất nhanh, 2 buổi mà tới for, rùi mảng nữa chứ

cattim1987
27-12-2009, 08:29
Khổ , ngay ngày đầu giáo viên đã cho bằng sạch các câu lệnh , mảng , vòng lặp rồi, giảng được 1 chút rồi cho đống bài tập làm thử

Mình có 1 bài mà không hiểu rõ lắm ( mình nghĩ là vừa tính tổng vừa tính chia nhưng làm 1 nửa thì tịt )

S= 1+3+5+...+N / 2+4+6+...+N ( "/" là đấu chia đó )

Mình tính tổng thì được nhưng phép chia thì chịu :D

QuyNam
27-12-2009, 15:51
bài này chắc là tính rồi tối giản phân số

nhập n>1


uses crt;
var n,i:integer;
t,m,max:longint;
begin
clrscr;
repeat
write('nhap n : ');readln(n);
until n>1;
for i:=1 to n do if i mod 2<>0 then t:=t+i else m:=m+i;
if t>m then max:=t else max:=m;
while (max>0) and ((t mod max<>0) or (m mod max<>0)) do dec(max);
if max=0 then writeln('kq : ',t,'/',m)
else writeln('kq : ',t div max,'/',m div max);
readln;
end.

nhokdragon94
27-12-2009, 16:25
Bài đó hem cần tính ra phân số tối giản đâu, tính chia ra số thập phân cho nhanh ^^

cattim1987
27-12-2009, 16:42
Mình cám ơn 2 bạn đã giúp đỡ mình rất nhiều, nhưng mình cũng muốn nói thêm rằng mình post bài lên đây không phải chỉ để xin mỗi đáp án của mỗi bài mà cái chính là phương pháp giải mà mình có thể thật sự hiểu được để vận dụng vào sau này
Mính thấy bài tính S vừa rồi của bạn QuyNam thật sự là mình chưa hiểu lắm, có thể là do phần tối giản phân số kia mình chưa được thầy giáo giảng qua
Nếu 2 bạn có lời giản 1 cách giản đơn phù hợp với những người mới học Pascal cơ bản như mình thì giúp mình nhé
Cám ơn 2 bạn rất nhiều

nhokdragon94
27-12-2009, 18:38
var n,i,tu,mau:integer;
begin
repeat
write('nhap n : ');readln(n);
until n>1;{cái này tạo vòng lặp, khi ta nhập n<1 thì nó sẽ hiện ra nhap n 1 lần nữa đến khi n>1}
for i:=1 to n do
If i mod 2=1(tức là những số 1,3,5..) then tu:=tu+i
else (tức là những trường hợp còn lại:i=2,4,6,..) mau:=mau+i;
if n mod 2=0 then tu:=tu+n
else mau:=mau+n;(cái này nhìn đề bài chác bạn cũng nghĩ ra đc vì sao làm như thế này)
writeln('ket qua: ',tu/mau:5:1);{cái này khỏi giảng } :D
readln;
end.
Hình như là đề phải là: (1+3+5+..+n)/(2+4+6+..+n) mới đúng(bạn ghi đề thiếu dấu ngoặc đơn)

cattim1987
27-12-2009, 19:18
Cám ơn bạn rất nhiều :D

QuyNam
29-12-2009, 17:14
uses crt;
var n,i:integer;
t,m,max:longint;
begin
clrscr;

repeat
write('nhap n : ');readln(n);
until n>1;
{nhập đến khi nào n>1}

for i:=1 to n do if i mod 2<>0 then t:=t+i else m:=m+i; {tính tử và mẫu}

if t>m then max:=t else max:=m; {tìm max trong 2 số tử và mẫu}

while (max>0) and ((t mod max<>0) or (m mod max<>0)) do dec(max);
{giảm max cho tới khi gặp ước chung của tử và mẫu, đây chính là ucln của 2 số đó }

if max=0 then writeln('kq : ',t,'/',m)
{khi mã giảm đến 0 thì tử và mẫu ko có ucnln, phân số đã tối giản }

else writeln('kq : ',t div max,'/',m div max);
{còn không thì chia cả tử và mẫu cho ucln, ta dc phân số tối giản}

readln;
end.


có thể bỏ phần tối giản phân số cũng dc

bara_dh
21-02-2010, 08:25
uses crt;
var g,c:integer;
begin
clrscr;
for c:=1 to 25 do
for g:=1 to 35 do
if (g*2+c*4=100) and (g+c=36) then
begin
writeln('So ga la: ',g);
write('So cho la: ',c);
end;
readln
end.

[=========> Bổ sung bài viết <=========]

uses crt;
var n,i,d,j:integer;
begin
clrscr;
repeat
write('Nhap n: ');readln(N);
until (N>3);
write('Cac so nguyen to tu 3 den ',n,' la: ');
for i:=2 to n do
begin
for j:=2 to i-1 do
if i mod j = 0 then d:=d+1;
if d=0 then write(i,' ');
d:=0;
end;
readln
end.

anhman182
10-03-2010, 13:26
có ai làm giúp em bài pascal này với????khó wa.
Cho chuỗi sau s1 ,s2 . viết chương trình bao gồm các chương trình con sau:
NHAP dùng để nhập vào s1,s2 các ký tự của bảng mã gồm các chữ cái và các số. Nếu nhập các ký tự khác sẽ thông báo nhập lại.
TACH : dùng để tách riêng các chữ cái và chữ số , những chữ số tách ra lưu vào mảng 1 chiều theo thứ tự của s1 trước s2 sau.
CONG dùng để cộng các chữ số tách ra từ 2 chuỗi
Thông báo kết qua theo mẫu
Chuỗi S1 sau khi tách ………….
Chuỗi S2 sau khi tách………….
Tổng các chữ số là………..
Viết bằng Palcal nha

deptrai_vp9x
14-04-2010, 01:07
dễ thế nay` ma` cung~ họ?