Thứ Sáu, 12 tháng 10, 2018

Bài tập Pascal 10


Bài 1: Một cụ già năm nay đã hơn trăm tuổi tham gia một chương trình truyền hình. Khi được MC hỏi về tuổi của mình cụ đáp: Nếu lấy ngày sinh của tôi cộng với bình phương các chữ số tuổi của tôi sẽ ra tuổi của tôi. Quá bất ngờ với tình huống này nên MC không thể tính ra tuổi của cụ già. Em hãy giúp MC tìm ra tuổi và ngày sinh của cụ già nhé
Bài 2: Mô phỏng lại hoạt động đoạn chương trình sau đây cho biết a=?, b=?
   a:=1;b:=2;
  for i:=1 to 3 do
  for j:=2 to 4 do
     a:=a+i+j;
     b:=b+a;
Bài 3: Mô phỏng lại hoạt động đoạn chương trình sau đây cho biết a=?, b=?
   a:=1;b:=2;
  for i:=1 to 3 do
  for j:=2 to 4 do
   begin
      a:=a+i+j;
      b:=b+a;
end;
Bài 4: Mô phỏng lại hoạt động đoạn chương trình sau đây cho biết a=?, b=?
 a:=1;b:=2;
 for i:=1 to 3 do
 begin
  for j:=2 to 4 do
     a:=a+i+j;
     b:=b+a;
 end;
Bài 5:
Sau nhiều lần thương lượng Bờm đã quyết định bán cho Phú Ông chiếc quạt mo của mình với giá N đồng. Do Bờm không có tiền trả lại nên Phú Ông phải trả đúng N đồng. Trong túi Phú Ông có các tờ tiền mệnh giá 500, 1000, 2000 đồng. Hãy giúp Phú Ông đưa ra các cách trả tiền cho Bờm
Yêu cầu: Viết chương trình đưa ra các cách trả tiền, (mỗi cách trên một dòng, nếu không có ghi chữ No). Với N là số nguyên dương nhập từ bàn phím
Ví dụ:



Bài 6: Sau một năm nuôi Heo đất, Bờm đã tiết kiệm được x đồng. Bờm quyết định dùng số tiền trên để mua y kg Gạo và Đậu tặng các bạn học sinh nghèo ăn Tết Nguyên Đán 2019. Giá một kg Gạo nếp là 6 đồng, giá một kg Gạo tẻ là 4 đồng, ba kg Đậu giá  là 11 đồng.
Yêu cầu: Viết chương trình giúp Bờm đưa ra các cách mua Gạo và Đậu (mỗi cách mua phải có đủ 3 loại, số kg mỗi loại phải là số nguyên dương, nếu có nhiều cách thì mỗi cách in trên một dòng, không có cách thì ghi ra chữ No).Với hai số nguyên x và y nhập từ bàn phím
Ví dụ x=108 và y=23
Bờm tiết kiệm được 108 đồng và muốn mua 23 kg Gạo và Đậu thì Bờm có 2 cách mua
Cách 1: Mua 9 kg Gạo nếp, 8 kg Gạo tẻ, 6 kg Đậu
Cách 2: Mua 10 kg Gạo nếp, 1 kg Gạo tẻ, 12 kg Đậu

Bài 7: Tèo đến cửa hàng sơn để mua x kg sơn. Trong cửa hàng có các loại thùng sơn là 15 kg, 18kg, 21 kg. Người chủ cửa hàng  chỉ bán sơn nguyên thùng chứ không bán lẻ. Yêu cầu Em hãy viết chương trình giúp Tèo đưa ra cách mua sơn với x nhập từ bàn phím (có nhiều cách thì mỗi cách trên một dòng và phải có đủ 3 loại, không có cách ghi no). Mỗi dòng ghi lần lượt số thùng 15, 18, 21 mỗi số cách nhau 1 kí tự trắng
ví dụ: x=165 thì có 5 cách







Bài 8: Bạn có từng thắc mắc vì sao hoa loa kèn có 3 cánh, hoa cúc vạn thọ 13 cánh, hoa cúc tây 21 cánh, hoa cúc thường có 34 hoặc 55 hoặc 89 cánh?
Fibonacci là dãy số kinh điển trong toán học được tìm thấy cách đây hơn 800 năm. Đến nay các nhà khoa học phát hiện nhiều trùng hợp thú vị về dãy số này trong tự nhiên.
Dãy Fibonacci là dãy vô hạn các số tự nhiên bắt đầu bằng 1 và 1, sau đó các số tiếp theo sẽ bằng tổng của 2 số liền trước nó. 

Cụ thể, các số đầu tiên của dãy Fibonacci là 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610... 
Yêu cầu 1: Viết chương trình in ra số fibonaci thứ n. Với n nhập từ bàn phím
ví dụ: n=6 in số 8
Yêu cầu 2: Viết chương trình in ra các số fibonaci <= n. Với n nhập từ bàn phím
ví dụ: n=6 in ra các số 1 1 2 3 5
Yêu cầu 3: Viết chương trình in ra n cặp số (2 số một cặp) fibonaci đầu tiên. Với n nhập từ bàn phím
ví dụ: n=2 in ra các số 1 1 2 3 (2 cặp số đầu tiên)

34 nhận xét:

  1. Bài 1
    var
    a,b,c,d:integer;
    begin
    for a:=1 to 31 do
    for b:=1 to 9 do
    for c:=0 to 9 do
    for d:=0 to 9 do
    if (a+b*b+c*c+d*d=100*b+10*c+d) then
    begin
    writeln('ngay sinh=',a);
    writeln('tuoi=',b,c,d);
    end;
    readln;
    end.

    Trả lờiXóa
  2. Bài 5:Trường hợp N phải chia hết cho 1000 (vì viết chương trình bị lỗi nhiều)
    var
    t1,t2,t3,n:integer;
    begin
    write('nhap n=');readln(n);
    for t1:=0 to 10 do
    for t2:=0 to 5 do
    for t3:=0 to 2 do
    if n=(t1*500+t2*1000+t3*2000) then
    writeln(t1,' to 500 ',t2,' to 1000 ',t3,' to 2 nghin ');
    readln;
    end.

    Trả lờiXóa
    Trả lời
    1. Nhận xét này đã bị tác giả xóa.

      Xóa
    2. Nhận xét này đã bị tác giả xóa.

      Xóa
    3. Sửa phần lặp for
      for t1:=0 to (n div 500) do
      for t2:=0 to (n div 1000) do
      for t3:=0 to (n div 2000) do

      Xóa
    4. vòng for
      for t1:=0 to (n div 500) do
      for t2:=0 to (n div 1000) do
      for t3:=0 to (n div 2000) do
      là chuẩn rồi đó em. Suy nghĩ trường hợp không có cách thì in ra chữ No nhé

      Xóa
  3. Nhận xét này đã bị tác giả xóa.

    Trả lờiXóa
  4. program Ngo_Ba_Van;
    uses crt;
    var
    i,c:longint;
    a,b:real;
    begin
    clrscr;
    write('nhap c=');
    readln(c);
    b:=1;
    a:=1;
    writeln('day so fibonacci:');
    writeln(a:0:0);
    writeln(b:0:0);
    for i:=1 to (c-1) do
    begin
    a:=a+b;
    b:=a+b;
    writeln(a:0:0);
    writeln(b:0:0);
    end;
    readln
    end.

    Trả lờiXóa
  5. Em làm rất tốt yêu cầu 3. 10 đ. Nhưng bài này nên khai báo a,b kiểu số nguyên nhé

    Trả lờiXóa
  6. Nhận xét này đã bị tác giả xóa.

    Trả lờiXóa
  7. program phat;
    uses crt;
    var a,b,d,y,n:longint;
    begin
    a:=0;
    b:=1;
    readln(n);
    writeln(b);
    for y:=0 to n-3 do
    begin
    d:=a+b;
    a:=b;
    b:=d;
    writeln(d);
    end;
    readln
    end.

    Trả lờiXóa
    Trả lời
    1. Th2 của Phát chưa đúng. Hãy test với n=8 để thấy nhé

      Xóa
  8. program Truong_Hop_1;
    uses crt;
    var
    a,b,c,i:longint;
    begin
    a:=1;
    b:=1;
    write('nhap c =');
    readln(c);
    for i:=1 to (c div 2)-1 do
    begin
    a:=a+b;
    b:=b+a;
    end;
    writeln(b);
    readln
    end.

    Trả lờiXóa
    Trả lời
    1. Trường hợp này em làm chưa đúng nhé. Ví dụ n=5 của em in ra 3 là chưa chính xác

      Xóa
  9. program Truong_Hop_2;
    uses crt;
    var
    a,b,c,i:longint;
    begin
    clrscr;
    write('nhap c=');
    readln(c);
    a:=1; writeln(a);
    b:=1; writeln(b);
    for i:=1 to c-1 do
    begin
    a:=a+b;
    if a<=c then
    writeln(a);
    b:=b+a;
    if b<=c then
    writeln(b);
    end;
    readln
    end.

    Trả lờiXóa
    Trả lời
    1. Th2 với n=25 in dư rất nhiều số. Vấn đề này sẽ được giải quyết sau nhé

      Xóa
    2. vậy thì như này được ko thầy: thay for i:=1 to c-1 thành
      for i:=1 to c div 2

      Xóa
  10. program truong_hop_2;
    uses crt;
    var a,b,d,y,n:longint;
    begin
    a:=0;
    b:=1;
    readln(n);
    for y:=0 to (n div 2)+1 do
    begin
    d:=a+b;
    a:=b;
    b:=d;
    writeln(d);
    end;
    readln
    end.

    Trả lờiXóa
    Trả lời
    1. em lỡ tay xóa trường hợp 1 ạ !!!!!!!!!!!!!!!!!!!!!!!!!!!!

      Xóa
    2. Vẫn chưa đúng nhé.n<5 thì đúng, N>=6 là sai rùi

      Xóa
  11. em sửa lặp y:=0 thành y:=1

    Trả lờiXóa
  12. sửa n div 2 thành (n+1) div 2

    Trả lờiXóa
  13. nguyendinhduong2007nqlúc 22:06 4 tháng 10, 2020

    thử máy

    Trả lờiXóa
  14. nguyendinhduong2007nqlúc 22:39 23 tháng 10, 2020

    var
    a,b,i,n:integer;
    begin
    a:=1;
    b:=1;
    write('nhap n=');readln(n);
    if n<=2 then write(1) else
    if n mod 2=0 then for i:= 1 to (n div 2)-1 do
    begin
    a:=a+b;
    b:=b+a;
    end else
    for i:=1 to (n div 2) do
    begin
    a:=a+b;
    b:=b+a;
    end;
    if n mod 2=0 then write(b) else write(a);
    readln;
    end.

    Trả lờiXóa
  15. nguyendinhduong2007nqlúc 22:41 23 tháng 10, 2020

    baif tren la truong hop 1

    Trả lờiXóa

  16. var i,n,a,b,z:integer;
    begin
    write('nhap n='); readln(n);
    a:=1;
    b:=1;
    i:=2;
    for z:=2 to n-1 do
    begin
    i:=i+1;
    if i mod 2=1 then a:=a+b else b:=b+a;
    end;
    if i mod 2=1 then write('so fibo thu',' ',n,'la:',a)
    else write('so fibo thu',' ',n,'la:',b);
    readln;
    end.

    Trả lờiXóa

  17. var a,b,c,i,n:integer;
    begin
    a:=1;
    b:=1;
    c:=a+b;
    write(n,' ','so fibo dau tien la:');
    write(1:2,1:2);
    for i:=3 to n do
    begin
    write(c:2);
    a:=b;
    b:=c;
    c:=a+b;
    end;
    readln;
    end.

    Trả lờiXóa
  18. var a,b,c,i,n:integer;
    begin
    a:=1;
    b:=1;
    c:=a+b;
    write(n,' ','cap so fibo dau tien la:');
    write(1:2,1:2);
    for i:=3 to (n*2) do
    begin
    write(c:2,' ');
    a:=b;
    b:=c;
    c:=a+b;
    end;
    readln;
    end.

    Trả lờiXóa