Cần giải giúp đề thi tin học Pascal lớp 9 cấp trường

Đề ở trong link google driver, anh em vào giúp mình bài số 3:
drive.google.com/file/d/0Byjf_8awQ8_XU0xTcTBROXhsbW8/view
 

tengiday

Happy life
Mình thấy bài 3 này dễ hơn 2 bài trc ấy chứ. Bạn dùng 'eoln' để biết đã đọc hết dòng hay chưa.
Nếu ko đc, cơ bản nhất thì có thể đọc từng char một vẫn xử lý đc hết.
Code xử lý đại khái như sau, đây là từ màn hình nhé. Bạn cần chỉnh lại để làm với file.
[ah]
Mã:
type arr = array[1..1000000] of double;
var a : arr;
    n, m, i, j : longint;

procedure sort(L, R : longint);
begin
.........
end;

BEGIN
    readln(m);
    writeln(m);
    for i := 1 to m do
        begin
            n := 0;
            while not eoln do
                begin
                    inc(n);
                    read(a[n]);
                end;
            readln;
            sort(1, n);
            for j := 1 to n do
                write(a[j]:0:2, ' ');
            writeln;
        end;
END.
[/ah]
 
[h=1]Cho mình hỏi bài này với.......
Viết chương trình để tìm năm sinh của Nguyễn Du biết đến năm 1786 tuổi của ông bằng tổng các chữ số năm ông sinh ra (Pascal)???????????[/h]
 

quanltv

Sư phụ của ADMIN
Cho mình hỏi bài này với.......
Viết chương trình để tìm năm sinh của Nguyễn Du biết đến năm 1786 tuổi của ông bằng tổng các chữ số năm ông sinh ra (Pascal)???????????
Bạn lập 1 chương trình Function tính tổng các chữ số của 1 số có 4 chữ số (năm sinh cần tìm)
vòng lặp trừ dần (bước nhảy là -1) từ 1786, cho đến khi điều kiện: (1786 trừ đi năm đang xét) = Function tổng các chữ số (của năm đang xét). Đúng thì dừng vòng lặp rồi in ra kết quả.
 
Bạn ơi bạn nói rõ hơn được ko ah?
Ko dùng Function được ko ah?
Vì mình mới học Pascal nên mình chưa hiểu??????? Bạn code cho mình đoạn vòng lặp được ko ah?
 

quanltv

Sư phụ của ADMIN
Bạn ơi bạn nói rõ hơn được ko ah?
Ko dùng Function được ko ah?
Vì mình mới học Pascal nên mình chưa hiểu??????? Bạn code cho mình đoạn vòng lặp được ko ah?
Function là hàm (chương trình con) do người dùng định nghĩa, làm riêng trước khi vào phần chính. Đến phần chính rồi lôi ra dùng bao nhiêu lần cũng được. Làm thế để chương trình nó rõ ràng, mạch lạc.

Mình không có Pascal ở đây, bạn tham khảo và tự làm nốt phần khai báo nhé
HTML:
Var ...

Function TongChuSo(k:integer) : integer;
Begin
tong:=0;
for i:=1 to 4 do
    begin
    tong:=tong+k mod 10;
    k: = k div 10;
    end;
TongChuSo:=tong;
End;


BEGIN
NamCanTim:=1786;
while 1786-NamCanTim<>TongChuSo(NamCanTim) do
    begin
    NamCanTim:=NamCanTim-1;
    end;


writeln('Nam can tim =',NamCanTim);
readln;
END.
 
Cảm ơn bạn rất nhiều mình làm được rồi.
Kết quả là Nam can tim = 1766

while 1786-NamCanTim<>TongChuSo(NamCanTim) do {Trong khi Tuoi khong bang Tong cac chu so nam ong sinh ra}
begin
NamCanTim:=NamCanTim-1;{Giam gia tri di 1}
end;


Mình chưa hiểu lắm chỗ While...do, sao giảm đi 1 nhỉ? mình thêm phần giải thích như trên????
Có phải là giảm đi 1 để ra năm cần tìm?
 

quanltv

Sư phụ của ADMIN
Cảm ơn bạn rất nhiều mình làm được rồi.
Kết quả là Nam can tim = 1766

while 1786-NamCanTim<>TongChuSo(NamCanTim) do {Trong khi Tuoi khong bang Tong cac chu so nam ong sinh ra}
begin
NamCanTim:=NamCanTim-1;{Giam gia tri di 1}
end;


Mình chưa hiểu lắm chỗ While...do, sao giảm đi 1 nhỉ? mình thêm phần giải thích như trên????
Có phải là giảm đi 1 để ra năm cần tìm?
Bạn cần đọc kiến thức cơ bản về việc sử dụng các vòng lặp
  1. For to do: vòng lặp có số vòng lặp xác định, lặp mãi cho đến khi điều kiện chuyển sang đúng
  2. While: vòng lặp không xác định, chỉ lặp khi điều kiện còn đúng
Ở đây mình dùng while để kiểm tra: nếu tuổi vẫn chưa bằng thì trừ tiếp đi 1 => mò dần cho đến khi thỏa mãn yêu cầu.
 
mn giải giúp mình bài tập sau
nhập số tự nhiên n. Phân tích n thành tổng các số tự nhiên khác nhau. in ra các trường hợp
 

Thống kê

Chủ đề
100,676
Bài viết
467,452
Thành viên
339,833
Thành viên mới nhất
duythinh2222
Top