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:
Trang 1Bà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:
Quá trình tính tổng kết thúc khi
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:
Nếu n lẽ Nếu n chẵn
Tính tổng TONG=u0 +u1+u2+u3+ +u n
Quá trình tính tổng kết thúc khi 6
1 10 −
−
n
u và u n 10 − 6
PROGRAM BAI_2;
USES CRT;
)!
3 ( ) 1 (
! 9
! 6
! 3
=
n
x x
x x
6
3
10 )!
3 (
−
<
n
x n
!
n
x u
n
n =
!
) 1 (
n x
u n = − n
Trang 2VAR 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
PROGRAM BAI_3_BT;
USES CRT;
VAR N,K,I:BYTE;
GTN,GTK,GTN_K:LONGINT;
TIEP:CHAR;
BEGIN
CLRSCR;
REPEAT
)!
(
!
k n k
n
C k
Trang 3REPEAT
WRITE('NHAP N VA K: ');
READLN(N,K);
IF (N<K) OR (K<0) THEN
WRITELN('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);
Trang 4FOR 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]);
Trang 5ASSIGN(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
Trang 6BEGIN
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])<ABS(A[J]) THEN
BEGIN
Trang 7TG:=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
Trang 8Ho_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
Trang 9PROGRAM 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);
Trang 10READLN(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
Trang 11BEGIN
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;
Trang 12VAR 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
Trang 13Bà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
Trang 14- 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);
Trang 15NHAP_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;
Trang 16USES 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