Tải bản đầy đủ (.doc) (20 trang)

bai tap pascal co ban

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (77.04 KB, 20 trang )

Bài 1: Với mỗi số thực x nhập vào từ bàn phím hãy tính tổng sau:
TONG = 1 −

x3 x6 x9
x 3n
+

+ ... + (−1) n
+ ...
3! 6! 9!
(3n)!
3n

x
Quá trình tính tổng kết thúc khi
< 10 −6
(3n)!
PROGRAM BAI_1;
USES CRT;
VAR X,S,T:REAL;
N:WORD;
CHON:CHAR;
BEGIN
CLRSCR;
REPEAT
WRITE('X = ');
READLN(X);
S:=0;
T:=1;
N:=1;
WHILE ABS(T)>=0.000001 DO


BEGIN
S:=S+T;
T:=T*((-(X*X*X))/((3*N)*(3*N-1)*(3*N-2)));
INC(N);
END;
WRITELN('S = ',S:0:3);
WRITE('BAN CO MUON TIEP TUC KHONG? (C/K): ');
READLN(CHON);
UNTIL UPCASE(CHON)='K';
END.
Bài 2: Cho dãy số un mà mỗi phần tử của nó được xác định như sau:
xn
un =
n!
un =

( x − 1) n
n!

Nếu n lẽ
Nếu n chẵn

Tính tổng TONG = u0 + u1 + u 2 + u3 + ... + u n
−6
−6
Quá trình tính tổng kết thúc khi u n−1  10 và u n  10
PROGRAM BAI_2;
USES CRT;



VAR X,S1,S2,T1,T2:REAL;
N:WORD;
BEGIN
CLRSCR;
WRITE('X = ');
READLN(X);
S1:=0;
S2:=0;
T1:=X;
T2:=1;
N:=1;
WHILE (ABS(T1)>=0.000001) AND (ABS(T2)>=0.000001) DO
BEGIN
IF ODD(N) THEN
BEGIN
S1:=S1+T1;
T1:=T1*(X/N);
END
ELSE
BEGIN
T2:=T2*((X-1)/N);
S2:=S2+T2;
END;
INC(N);
END;
WRITE('S = ',S1+S2:0:3);
READLN;
END.
BÀI 3: Cho hai số tự nhiên k, n (k<=n). Tính
C nk =


n!
k!( n − k )!

PROGRAM BAI_3_BT;
USES CRT;
VAR N,K,I:BYTE;
GTN,GTK,GTN_K:LONGINT;
TIEP:CHAR;
BEGIN
CLRSCR;
REPEAT


REPEAT
WRITE('NHAP N VA K: ');
READLN(N,K);
IF (NWRITELN('MOI NHAP LAI');
UNTIL (N>K) AND (K>0);
GTN:=1;
FOR I:=2 TO N DO
GTN:=GTN*I;
GTK:=1;
FOR I:=2 TO K DO
GTK:=GTK*I;
GTN_K:=1;
FOR I:=2 TO N-K DO
GTN_K:=GTN_K*I;
WRITELN('TO HOP CHAP ',K,' CUA ',N,' = ',GTN DIV GTK DIV GTN_K);

WRITE('CO MUON TIEP TUC KHONG? (C/K): ');
READLN(TIEP);
UNTIL UPCASE(TIEP)='K';
END.
Bài 4: Cho số tự nhiên N và mảng một chiều các số thực A[1..N]. Hãy tính tổng các
phần tử của mảng A có giá trị lớn hơn hoặc bằng -5 và nhỏ hơn hoặc bằng 5.
Input: File dạng text BAI4.INP có cấu trúc như sau:
- Dòng đầu tiên chứa số tự nhiên N
- Dòng thứ i+1 chứa số hạng thứ i của mảng A.
Output: File dạng text BAI4.OUT có cấu trúc như sau:
Chỉ một dòng chứa tổng theo yêu cầu của bài toán.
PROGRAM BAI_4;
USES CRT;
VAR F:TEXT;
I,N:BYTE;
A:ARRAY[1..20] OF REAL;
S:REAL;
BEGIN
CLRSCR;
ASSIGN(F,'BAI4.INP');
RESET(F);
READLN(F,N);


FOR I:=1 TO N DO
READLN(F,A[I]);
ASSIGN(F,'BAI4.OUT');
REWRITE(F);
S:=0;
FOR I:=1 TO N DO

IF ABS(A[I])<=5 THEN
S:=S+A[I];
WRITE(F,'TONG LA = ',S:0:3);
CLOSE(F);
WRITE('XONG');
READLN;
END.
Bài 5: Cho số tự nhiên N và mảng một chiều các số thực A[1..N]. Với hai số thực X
và Y cho trước, hãy đếm số luợng các phần tử của mảng A có giá trị bằng X và số
luợng các phần tử của mảng A có giá trị bằng Y.
Input: File dạng text BAI5.INP có cấu trúc như sau:
- Dòng đầu tiên chứa số tự nhiên N
- Dòng thứ hai chứa hai số thực X và Y, hai số cách nhau tối thiểu một dấu trống
- Dòng thứ i+2 chứa số hạng thứ i của mảng A.
Output: File dạng text BAI4.OUT có cấu trúc như sau:
Dòng thứ nhất chứa số lượng các phần tử của A có giá trị bằng X.
Dòng thứ hai chứa số lượng các phần tử của A có giá trị bằng X.
PROGRAM BAI_5;
USES CRT;
VAR N,I,SL1,SL2:BYTE;
X,Y:REAL;
F:TEXT;
A:ARRAY[1..50] OF REAL;
BEGIN
CLRSCR;
ASSIGN(F,'BAI5.INP');
RESET(F);
READLN(F,N);
READLN(F,X,Y);
FOR I:=1 TO N DO

READLN(F,A[I]);


ASSIGN(F,'BAI5.OUT');
REWRITE(F);
SL1:=0;
SL2:=0;
FOR I:=1 TO N DO
IF A[I]=X THEN
INC(SL1)
ELSE
IF A[I]=Y THEN
INC(SL2);
WRITELN(F,'SO CAC PHAN TU BANG ',X:0:3,' LA: ',SL1);
WRITELN(F,'SO CAC PHAN TU BANG ',Y:0:3,' LA: ',SL2);
CLOSE(F);
WRITE('XONG');
READLN;
END.
Bài 6: Cho số tự nhiên N và mảng một chiều các số thực A[1..N]. Với mỗi số thực
X nhập từ bàn phím, hãy xác định phần tử đầu tiên của mảng A có giá trị bằng X.
PROGRAM BAI_6;
USES CRT;
CONST MAX=50;
VAR A:ARRAY[1..MAX] OF REAL;
I,OK,N:BYTE;
X:REAL;
TIEP:CHAR;
BEGIN
CLRSCR;

WRITE('SO LUONG PHAN TU CUA MANG LA: ');
READLN(N);
FOR I:=1 TO N DO
BEGIN
WRITE('GIA TRI THU ',I,' = ');
READLN(A[I]);
END;
REPEAT
WRITE('X = ');
READLN(X);
OK:=0;
FOR I:=1 TO N DO
IF A[I]=X THEN


BEGIN
WRITELN('VI TRI ',X:0:3,' TRONG DAY: ',I);
OK:=0;
BREAK;
END
ELSE
OK:=1;
IF OK=1 THEN
WRITELN(X:0:3,' KHONG CO TRONG DAY');
WRITE('CO MUON TIEP TUC KHONG? (C/K): ');
READLN(TIEP);
UNTIL UPCASE(TIEP)='K';
END.
Bài 7: Cho số tự nhiên N và mảng một chiều các số thực A[1..N]. Hãy sắp xếp A
thành một dãy tăng dần theo giá trị tuyệt đối của các phần tử.

Input: File dạng text BAI7.INP có cấu trúc như sau:
- Dòng đầu tiên chứa số tự nhiên N
- Dòng thứ i+1 chứa số hạng thứ i của mảng A.
Output: File dạng text BAI7.OUT có cấu trúc như sau:
Chỉ một dòng chứa mảng A đã sắp xếp các phần tử cách nhau tối thiểu một dấu
trống.
PROGRAM BAI_7;
USES CRT;
VAR F:TEXT;
I,J,N:BYTE;
A:ARRAY[1..50] OF REAL;
TG:REAL;
BEGIN
CLRSCR;
ASSIGN(F,'BAI7.INP');
RESET(F);
READLN(F,N);
FOR I:=1 TO N DO
READLN(F,A[I]);
FOR I:=1 TO N-1 DO
FOR J:=I+1 TO N DO
IF ABS(A[I])BEGIN


TG:=A[I];
A[I]:=A[J];
A[J]:=TG
END;
ASSIGN(F,'BAI7.OUT');

REWRITE(F);
FOR I:=1 TO N DO
WRITE(F,A[I]:0:3,' ');
CLOSE(F);
WRITE('XONG');
READLN;
END.
Bài 8: Cho hai số tự nhiên M, N và ba mảng một chiều các số thực A[1..M], B[1..N],
C[1..M+N]. Hãy lần lượt làm các công việc sau:
- Nhập từ bàn phím hai mảng A và B sao cho A, B là hai dãy tăng dần.
- Đưa tất cả các phần tử của hai mảng A, B vào mảng C sao cho C cũng là dãy tăng
dần.
PROGRAM BAI_8;
USES CRT;
CONST MAX=50;
VAR A,B,C:ARRAY[1..MAX] OF REAL;
I,J,K:BYTE;
PROCEDURE NHAP_MANG(VAR A:CHAR; N:BYTE);
BEGIN
WRITE('NHAP SO LUONG PHAN TU MANG ',A,': ');
READLN(N);
FOR I:=1 TO N DO
BEGIN
WRITELN('GIA TRI THU ',I,' = ');
READLN(A[I]);
END;
END;
BEGIN
CLRSCR;
NHAP_MANG('A',3);

READLN;
END.
Bài 9: Để quản lý sinh viên của một lớp người ta lưu trữ hồ sơ của mỗi sinh viên vào
một bản ghi có dạng sau:
TYPE


Ho_so= Record
Ho_dem:string[18];
Ten:string[7];
Tuoi:byte;
End;
Hãy lần lượt thực hiện các công việc sau:
- Nhập vào một danh sách có N sinh viên (N là số tự nhiên).
- Sắp xếp danh sách đó theo thứ tự alphabet của họ và tên
- Sắp xếp danh sách đó theo thứ tự giảm dần của tuổi
Input: File dạng text BAI9.INP có cấu trúc:
- Dòng đầu tiên chứa số tự nhiên N
- Cứ ba dòng tiếp theo chứa thông tin về một sinh viên theo thứ tự như sau:
+ Dòng thứ nhất chứa họ và chữ lót
+ Dòng thứ hai chứa tên
+ Dòng thứ ba chứa tuổi
Output: File dạng text BAI9_1.OUT chứa danh sách theo thứ tự Alphabet có cấu
trúc:
Mỗi dòng chứa thông tin của một sinh viên.
File dạng text BAI9_2.OUT chứa danh sách theo thứ tự tuổi có cấu trúc:
Mỗi dòng chứa thông tin của một sinh viên.
Bài 10: Để quản lý sinh viên của một lớp người ta lưu trữ hồ sơ của mỗi sinh viên
vào mỗi bản ghi có dạng sau:
TYPE

Ho_so= Record
Ma_so_SV:string[4];
Ho_dem:string[18];
Ten:string[7];
Tuoi:byte;
End;
Hãy lần lượt thực hiện các công việc sau:
- Nhập vào một danh sách có N sinh viên (N là số tự nhiên).
- Với mỗi mã số sinh viên được nhập từ bàn phím hãy in hồ sơ của sinh viên
tương ứng ra màn hình.
Input: File dạng text BAI10.INP có cấu trúc:
- Dòng đầu tiên chứa số tự nhiên N
- Cứ bốn dòng tiếp theo chứa thông tin về một sinh viên theo thứ tự như sau:
+ Dòng thứ nhất chứa mã số sinh viên
+ Dòng thứ hai chứa họ và chữ lót
+ Dòng thứ ba chứa tên
+ Dòng thứ tư chứa tuổi


PROGRAM BAI3;
USES CRT;
CONST MAX=100;
TYPE HSHS=RECORD
MASO:STRING[4];
HD:STRING[30];
TEN:STRING[7];
TUOI:BYTE;
END;
VAR LOP:ARRAY[1..MAX] OF HSHS;
N,N1,N2,I,J:BYTE;

TG:HSHS;
F:TEXT;
BEGIN
CLRSCR;
N:=0;
{ NHAP DU LIEU TU TEP THU 1 }
ASSIGN(F,'CAU31.INP');
RESET(F);
READLN(F,N1);
FOR I:=1 TO N1 DO
WITH LOP[I] DO
BEGIN
READLN(F,MASO);
READLN(F,HD);
READLN(F,TEN);
READLN(F,TUOI);
END;
CLOSE(F);
N:=N1+N;
{ NHAP DU LIEU TU TEP THU 2 }
ASSIGN(F,'CAU32.INP');
RESET(F);
READLN(F,N2);
FOR I:=(N+1) TO (N+N2) DO
WITH LOP[I] DO
BEGIN
READLN(F,MASO);
READLN(F,HD);
READLN(F,TEN);



READLN(F,TUOI);
END;
CLOSE(F);
N:=N2+N;
FOR I:=1 TO N-1 DO
FOR J:=I+1 TO N DO
IF (LOP[I].TEN>LOP[J].TEN) OR (LOP[I].TEN=LOP[J].TEN)
AND (LOP[I].HD>LOP[I].HD) THEN
BEGIN
TG:=LOP[I];
LOP[I]:=LOP[J];
LOP[J]:=TG;
END;
ASSIGN(F,'CAU3.OUT');
REWRITE(F);
FOR I:=1 TO N DO
WITH LOP[I] DO
WRITELN(F,MASO:7,HD:15,TEN:7,TUOI:5);
CLOSE(F);
WRITELN;
WRITELN('
====================== DA HOAN THANH
=======================');
READLN;
END.
Bài 11: Cho hai số tự nhiên M, N và mảng hai chiều các số thực A[1..M,1..N]. Với
mỗi số thực X nhập từ bàn phím, hãy xác định phần tử đầu tiên của mảng A có giá trị
bằng X. (thứ tự các phần tử của mảng được tính theo ưu tiên hàng, cột)
PROGRAM BAI_11;

USES CRT;
CONST MAX=50;
VAR A:ARRAY[1..MAX,1..MAX] OF REAL;
I,J,OK,M,N:BYTE;
X:REAL;
TIEP:CHAR;
BEGIN
CLRSCR;
WRITE('NHAP SO HANG VA SO COT: ');
READLN(M,N);
FOR I:=1 TO M DO
FOR J:=1 TO N DO


BEGIN
WRITE('NHAP GIA TRI HANG ',I,' COT ',J,' = ');
READLN(A[I,J]);
END;
CLRSCR;
FOR I:=1 TO M DO
BEGIN
FOR J:=1 TO N DO
WRITE(A[I,J]:8:1);
WRITELN;
END;
REPEAT
WRITE('X = ');
READLN(X);
OK:=0;
FOR I:=1 TO M DO

BEGIN
FOR J:=1 TO N DO
IF X=A[I,J] THEN
BEGIN
WRITELN('VI TRI ',X:0:1,' TRONG MAT LA HANG ',I,' COT ',J);
OK:=0;
BREAK;
END
ELSE
OK:=1;
IF X=A[I,J] THEN
BREAK;
END;
IF OK=1 THEN
WRITELN(X:0:1,' KHONG CO TRONG MAT');
WRITE('CO MUON TIEP TUC KHONG? (C/K): ');
READLN(TIEP);
UNTIL UPCASE(TIEP)='K';
END.
Bài 12: Cho hai số tự nhiên M, N và mảng hai chiều các số thực A[1..M,1..N]. Hãy
sắp xếp A thành một ma trận có các dòng là các dãy tăng dần.
PROGRAM BAI_12;
USES CRT;
CONST MAX=50;


VAR K,I,J,M,N:BYTE;
A:ARRAY[1..MAX,1..MAX] OF REAL;
TG:REAL;
BEGIN

CLRSCR;
WRITE('NHAP SO HANG VA COT: ');
READLN(M,N);
FOR I:=1 TO M DO
FOR J:=1 TO N DO
BEGIN
WRITE('NHAP GIA TRI HANG ',I,' COT ',J,' = ');
READLN(A[I,J]);
END;
CLRSCR;
FOR I:=1 TO M DO
BEGIN
FOR J:=1 TO N DO
WRITE(A[I,J]:8:1);
WRITELN;
END;
FOR K:=1 TO M DO
FOR I:=1 TO N-1 DO
FOR J:=I+1 TO N DO
IF A[K,I]>A[K,J] THEN
BEGIN
TG:=A[K,I];
A[K,I]:=A[K,J];
A[K,J]:=TG;
END;
WRITELN('MANG SAU KHI XU LY');
FOR I:=1 TO M DO
BEGIN
FOR J:=1 TO N DO
WRITE(A[I,J]:8:1);

WRITELN;
END;
READLN;
END.


Bài 13: Cho số tự nhiên N và mảng hai chiều các số thực A[1..N,1..N]. Hãy chuyển
vị ma trận A.
PROGRAM BAI_13;
USES CRT;
CONST MAX=50;
VAR A,B:ARRAY[1..MAX,1..MAX] OF REAL;
I,J,M,N:BYTE;
BEGIN
CLRSCR;
WRITE('NHAP SO HANG VA SO COT: ');
READLN(M,N);
FOR I:=1 TO M DO
FOR J:=1 TO N DO
BEGIN
WRITE('NHAP GIA TRI HANG ',I,' COT ',J,' = ');
READLN(A[I,J]);
END;
CLRSCR;
FOR I:=1 TO M DO
BEGIN
FOR J:=1 TO N DO
WRITE(A[I,J]:8:1);
WRITELN;
END;

FOR I:=1 TO M DO
FOR J:=1 TO N DO
B[I,J]:=A[J,I];
WRITELN('MA TRAN CHUYEN VI LA');
FOR I:=1 TO N DO
BEGIN
FOR J:=1 TO M DO
WRITE(B[I,J]:8:1);
WRITELN;
END;
READLN;
END.
Bài 14: Cho ba số tự nhiên M, P, N và ba mảng hai chiều các số thực A[1..M,1..P],
B[1..P,1..N] và C[1..M,1..N]. Hãy lần lượt thực hiện các công việc sau:
- Nhập hai ma trận A, B từ bàn phím.


- Tính C= A*B
- In ra màn hình 3 ma trận A, B và C
PROGRAM BAI_14;
USES CRT;
CONST MAX=50;
TYPE MAT=ARRAY[1..MAX,1..MAX] OF REAL;
VAR A,B,C:MAT;
I,J,K,M,N,P:BYTE;
PROCEDURE NHAP_MANG(HANG,COT:BYTE; VAR TEN_MT:MAT);
BEGIN
FOR I:=1 TO HANG DO
FOR J:=1 TO COT DO
BEGIN

WRITE('NHAP GIA TRI HANG ',I,' COT ',J,' = ');
READLN(TEN_MT[I,J]);
EPROCEDURE IN_MANG(HANG,COT:BYTE; VAR TEN_MT:MAT);
BEGIN
FOR I:=1 TO HANG DO
BEGIN
FOR J:=1 TO COT DO
WRITE(TEN_MT[I,J]:8:1);
WRITELN;
END;
END;
BEGIN
CLRSCR;
WRITE('LAN LUOT NHAP SO HANG VA COT MANG A VA B: ');
READLN(M,P,N);


NHAP_MANG(M,P,A);
NHAP_MANG(P,N,B);
FOR I:=1 TO M DO
FOR J:=1 TO N DO
BEGIN
C[I,J]:=0;
FOR K:=1 TO P DO
C[I,J]:=C[I,J]+A[I,K]+B[K,J];
END;
CLRSCR;
WRITELN('MANG A');
IN_MANG(M,P,A);
WRITELN('MANG B');

IN_MANG(P,N,B);
WRITELN('MANG C');
IN_MANG(M,N,C);
READLN;
END.
Bài 15: Cho hai số tự nhiên M, N và mảng hai chiều các số thực A[1..M,1..N]. Việc
lưu trữ ma trận A trên file dạng Text được tổ chức như sau:
- Dòng đầu tiên chứa hai số M và N.
- Dòng thứ i+1 của file chứa dòng thứ i của ma trận.
- Trên mỗi dòng các phần tử phân cách nhau tối thiểu một dấu trống.
Giả sử đã tồn tại trên điã tệp INPUT.DAT có cấu trúc như trên. Hãy đọc dữ liệu
vào cho mảng A và in mảng đó ra màn hình.
PROGRAM BAI_15;


USES CRT;
CONST MAX=50;
VAR F:TEXT;
A:ARRAY[1..MAX,1..MAX] OF REAL;
M,N,I,J:BYTE;
BEGIN
CLRSCR;
ASSIGN(F,'INPUT.DAT');
RESET(F);
READLN(F,M,N);
FOR I:=1 TO M DO
BEGIN
FOR J:=1 TO N DO
READ(F,A[I,J]);
READLN(F);

END;
CLOSE(F);
FOR I:=1 TO M DO
BEGIN
FOR J:=1 TO N DO
WRITE(A[I,J]:8:1);
WRITELN;
END;
READLN;
END.
Bài 16: Cho hai số tự nhiên M, N và mảng hai chiều các số thực A[1..M,1..N]. Việc
lưu trữ ma trận A trên file dạng Text được tổ chức như sau:
- Dòng đầu tiên chứa hai số M và N.
- Dòng thứ i+1 của file chứa dòng thứ i của ma trận.
- Trên mỗi dòng các phần tử phân cách nhau tối thiểu một dấu trống.
Hãy đọc dữ liệu vào cho mảng A từ bàn phím và ghi mảng đó ra tệp
OUTPUT.DAT có cấu trúc như trên.
PROGRAM BAI_16;
USES CRT;
CONST MAX=50;
VAR F:TEXT;
A:ARRAY[1..MAX,1..MAX] OF REAL;
M,N,I,J:BYTE;
BEGIN


CLRSCR;
ASSIGN(F,'INPUT.DAT');
RESET(F);
READLN(F,M,N);

FOR I:=1 TO M DO
BEGIN
FOR J:=1 TO N DO
READ(F,A[I,J]);
READLN(F);
END;
ASSIGN(F,'OUTPUT.DAT');
REWRITE(F);
FOR I:=1 TO M DO
BEGIN
FOR J:=1 TO N DO
WRITE(F,A[I,J]:8:1);
WRITELN(F);
END;
CLOSE(F);
WRITE('DA XONG');
READLN;
END.
Câu 17:
Viết một chương trình sử dụng thuật toán đệ quy để tính N! với N được nhập từ bàn
phím
PROGRAM BAI_17;
USES CRT;
VAR N:BYTE;
TIEP:CHAR;
FUNCTION GT(I:BYTE):LONGINT;
BEGIN
IF (I=0) THEN
GT:=1
ELSE

GT:=I*GT(I-1);
END;
BEGIN
CLRSCR;
REPEAT
REPEAT


WRITE('N = ');
READLN(N);
UNTIL N>=0;
WRITELN(N,'! = ',GT(N));
WRITE('CO MUON TIEP TUC KHONG? (C/K): ');
READLN(TIEP);
UNTIL UPCASE(TIEP)='K';
END.
Câu 18:
Viết một chương trình sử dụng thuật toán đệ quy để tính số hạng thứ N của dãy
số Fibonaci, với N được nhập từ bàn phím.
PROGRAM BAI_18;
USES CRT;
VAR TIEP:CHAR;
N:BYTE;
FUNCTION FIBO(I:BYTE):WORD;
BEGIN
IF (I=1) OR (I=2) THEN
FIBO:=1
ELSE
FIBO:=FIBO(I-1)+FIBO(I-2);
END;

BEGIN
CLRSCR;
REPEAT
WRITE('NHAP VI TRI SO HANG FIBONAXI: ');
READLN(N);
WRITELN('SO FIBONAXI THU ',N,' = ',FIBO(N));
WRITE('CO MUON TIEP TUC KHONG? (C/K): ');
READLN(TIEP);
UNTIL UPCASE(TIEP)='K';
END.
Câu 19:
Viết một chương trình sử dụng thuật toán đệ quy để tính tổng các phần tử của
mảng một chiều A[1..N] với mảng này được nhập từ bàn phím.
PROGRAM BAI_19;
USES CRT;
CONST MAX=100;
VAR A:ARRAY[1..MAX] OF INTEGER;
N,I:BYTE;


FUNCTION TONG(I:BYTE):LONGINT;
BEGIN
IF I=0 THEN
TONG:=0
ELSE
TONG:=A[I]+TONG(I-1);
END;
BEGIN
CLRSCR;
WRITE('NHAP SO LUONG PHAN TU CUA MANG: ');

READLN(N);
FOR I:=1 TO N DO
BEGIN
WRITE('GIA TRI THU ',I,' = ');
READLN(A[I]);
END;
WRITELN('TONG DAY = ',TONG(N));
READLN;
END.
Câu 20:
Viết một chương trình sử dụng thuật toán đệ quy để tính số hạng thứ N của dãy
số được định nghĩa như sau:
U1=1 ; U2= 2; U3= 3; U4= 4
Với mọi N>4
UN= UN-1 + 2.UN-3 - UN-4 Nếu N chẵn
UN= UN-1 + UN-3
Nếu N lẽ
Với N được nhập từ bàn phím.
PROGRAM BAI_20;
USES CRT;
VAR N:BYTE;
TIEP:CHAR;
FUNCTION SO_HANG(I:BYTE):WORD;
BEGIN
IF I<=4 THEN
SO_HANG:=I
ELSE
IF ODD(N) THEN
SO_HANG:=SO_HANG(I-1)+SO_HANG(I-3)
ELSE

SO_HANG:=SO_HANG(I-1)+2*SO_HANG(I-3)-SO_HANG(I-4);


END;
BEGIN
CLRSCR;
REPEAT
WRITE('NHAP VI TRI SO HANG: ');
READLN(N);
WRITELN('GIA TRI SO HANG THU ',N,' = ',SO_HANG(N));
WRITE('CO MUON TIEP TUC KHONG? (C/K): ');
READLN(TIEP);
UNTIL UPCASE(TIEP)='K';
END.



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×