23 tháng 4, 2014

Tổng hợp các bài tập lập trình trên Turbo Pascal (Phần tiếp theo - P7)


Trong bài viết sau đây sẽ chia sẻ đến bạn tổng hợp các bài tập cơ bản lập trình trên phần mền Turbo Pascal. Hy vọng, nó sẽ giúp ích cho bạn khi mới bắt đầu làm quen với ngôn ngữ lập trình cơ bản. Các bài tập tổng hợp bao gồm: các lệnh nhập xuất đơn giản, các câu lệnh điều khiển, dữ liệu kiểu mảng, chương trình con ... Phần tiếp theo - P7.
 
56. Viết chương trình thực hiện các công việc sau:
- Nhập mảng 1 chiều gồm n phần tử kiểu số nguyên.
- In mảng vừa nhập.
- In ra phần tử lớn nhất của dãy.
- In ra phần tử nhỏ nhất của dãy.
- Tính tổng dãy.
- Đếm số phần tử là lũy thừa của k, với k nhập từ bàn phím.

Uses crt;
Var a: array [1 .. 20] of integer;
n, i, tong, max, min, k, d, lt: integer;
Begin
Clrscr;
Repeat
Write ('Nhap phan tu thu n: ');
Readln (n);
Until (n > 0) and (n < 21);
For i := 1 to n do
Begin
Write ('Nhap phan tu thu ', i, ': ');
Readln (a [i]);
End;
Writeln ('Mang vua nhap la: ');
For i := 1 to n do
Write (a [i] : 6);
max := a [1];
For i := 2 to n do
If max < a [i] then
max := a [i];
Writeln ('Phan tu lon nhat cua day: ', max);
min := a [1];
For i := 2 to n do
If min > a [i] then
min := a [i];
Writeln ('Phan tu nho nhat cua day: ', min);
tong := 0;
For i := 1 to n do
tong := tong + a [i];
Writeln ('Tong phan tu la: ', tong);
Write ('Nhap k= ');
Readln (k);
d := 0;
lt := 1;
For i := 1 to n do
If lt = a [i] * k then d := d + 1;
Writeln ('So phan tu la luy thua cua ', k, ': ', d);
Readln;
End.

57. Viết chương trình thực hiện các công việc sau:
- Nhập mảng 1 chiều gồm n phần tử kiểu số nguyên.
- In ra các phần tử nằm ở các vị trí chẵn.
- Kiểm tra dãy có thứ tự hay không?
- Kiểm tra dãy có đối xứng không?
- Tạo ra 1 mảng mới được copy từ mảng nhập gồm m phần tử bắt đầu từ phần tử thứ k, với m và k được nhập từ bàn phím.
- In ra mảng vừa tạo.

Uses crt;
Var a: array [1 .. 20] of integer;
n, i, m, k: integer;
Begin
Clrscr;
Repeat
Write ('Nhap phan tu n: ');
Readln (n);
Until (n > 0) and (n < 21);
For i := 1 to n do
Begin
Write ('Nhap phan tu thu ', i, ': ');
Readln (a [i]);
End;
For i := 1 to n do
If i mod 2 = 0 then write (a [i], ' ')
Else i := i + 1;
Writeln ('Cac phan tu nam o vi tri chan');
i := 1; kt := true;
Repeat
If a [i] <= a [i + 1] then
i := i + 1
Else kt := false;
Until (kt = false) or (i = n - 1);
If kt = true then
Write ('Day co thu tu tang dan')
Else
Begin
Repeat
If a [i] >= a [i + 1] then
i := i + 1
Else kt := false;
Until (kt = false) or (i = n + 1);
If kt = true then
Writeln ('Day co thu tu giam')
Else
Writeln ('Day khong co thu tu');
End;
Readln;
End.

58. Viết chương trình nhập vào ma trận a gồm m hàng, n cột, các phần tử kiểu số thực. In ra ma trận vừa nhập. Cho biết ma trận có bao nhiêu phần tử có phần nguyên là chẵn. Tính tích các phần tử dương nằm trên hàng h, với h nhập từ bàn phím. Sắp xếp các phần từ nằm trên cột c theo thứ tự tăng dần, với c nhập từ bàn phím. In ra ma trận sau khi sắp xếp.

Uses crt;
Var a: array [1 .. 10, 1 .. 10] of real;
tam, m, n, i, j, h, c, d: integer;
tich: real;
Begin
Clrscr;
Repeat
Write ('Nhap so hang va so cot: ');
Readln (m, n);
Until (m > 0) and (m < 11) and (n > 0) and (n < 11);
For i := 1 to m do
For j := 1 to n do
Begin
Write ('Nhap a [', i, ', ', j, ']: ');
Readln (a [i, j]);
End;
For i := 1 to m do
Begin
For j := 1 to n do
Write (a [i, j] : 6);
Writeln;
End;
d := 0;
For i := 1 to m do
For j := 1 to n do
If trunc (a [i, j]) mod 2 = 0 then
d := d + 1;
Writeln ('Trong ma tran co ', d, ' phan tu co phan nguyen la chan');
Repeat
Write ('Nhap hang can tinh tich: ');
Readln (h);
Until (h > 0) and (h <= m);
tich := 1;
For i := 1 to n do
If a [h, j] > 0 then
tich := tich * a [h, j];
Writeln ('Tich cac phan tu duong nam tren hang ', h, ' la: ', tich);
Repeat
Writeln ('Nhap vao cot can sap xep: ');
Readln (c);
Until (c > 0) and (c <= n);
For i := 1 to n - 1 do
For j := i + 1 to m do
If a [c, i] > a [c, j] then
Begin
tam := a [c, i];
a [c, i] := a [c, j];
a [c, j] := tam;
End;
For i := 1 to m do
Begin
For j := 1 to n do
Write (a [i, j] : 6);
Writeln;
End;
Readln;
End.

59. Viết chương trình nhập vào ma trận vuông cấp n, các phần tử kiểu ký tự. In ra ma trận vừa nhập. Cho biết trong ma trận có bao nhiêu ký tự 'T'. In ra các phần tử nằm trên đường chéo phụ. Cho biết ký tự lớn nhất nằm trên đường chéo chính là gì? Cho biết ma trận có hàng nào có thư tự tăng dần không?

Var a: array [1 .. 10, 1 .. 10] of char;
n, i, j, d: integer;
max: char; kt: boolean;
Begin
Repeat
Write ('Nhap cap cua ma tran: ');
Readln (n);
Until (n > 0) and (n < 11);
For i := 1 to n do
For j := 1 to n do
Begin
Write ('Nhap a [', i, ', ', i, ']: ');
Readln (a [i, j]);
End;
For i := 1 to n do
Begin
For j := 1 to n do
Write (a [i, j], ' ');
Writeln;
End;
d := 0;
For i := 1 to n do
For j := 1 to n do
If a [i, j] = 'T' then
d := d + 1;
Writeln ('Cac ky tu la T: ', d);
For i := 1 to n do
For j := 1 to n do
If i + j = n + 1 then
Write (a [i, j]);
Writeln ('Cac phan tu nam tren duong cheo phu la: ', a [i, j]);
max := a [1, 1];
For i := 1 to n do
If max < a [i, i] then max := a [i, i];
Writeln ('Cac ky tu lon nhat nam tren duong cheo chinh la: ', max);
i := 1, kt := false;
While (i <= n) and (kt = false) do
Begin
d := 0;
For j := 1 to n - 1 do
If a [i, j] <= a [i, j + 1] then
d := d + 1;
If d = n - 1 then kt := true
Else i := i + 1;
End;
If kt = true then writeln ('Tang')
Else writeln ('Khong tang');
Readln;
End.

60. Viết chương trình nhập vào 2 ma trận gồm m hàng, n cột, các phần tử kiểu số nguyên. Tạo ra ma trận thứ 3 là ma trận tổng của 2 ma trận vừa nhập. Tạo ra ma trận thứ 4 là ma trận hiệu của 2 ma trận vừa nhập.

Var a: array [1 .. 20, 1 .. 20] of integer;
b: array [1 .. 20, 1 .. 20] of integer;
c: array [1 .. 20, 1 .. 20] of integer;
d: array [1 .. 20, 1 .. 20] of integer;
Begin
Repeat
Write ('Nhap so hang va so cot: ');
Readln (m, n);
Until (m > 0) and (m < 21) and (n > 0 ) and (n < 21);
For i := 1 to m do
For j := 1 to n do
Begin
Write ('Nhap phan tu thu a [', i, ', ', j, ']: ');
Readln (a [i, j]);
End;
Writeln ('Ma tran thu nhat la: ');
For i := 1 to m do
Begin
For j := 1 to n do
Write (a [i, j]);
Writeln;
End;
Repeat
Write ('Nhap so hang va so cot: ');
Readln (m, n);
Until (m > 0) and (m < 21) and (n > 0) and (n < 21);
For i := 1 to m do
For j := 1 to n do
Begin
Write ('Nhap a [', i, ', ', j, ']: ');
Readln (a [i, j]);
End;
Writeln ('Ma tran thu hai la: ');
For i := 1 to m do
Begin
For j := 1 to n do
Write (b [i, j]);
Writeln;
End;
For i := 1 to m do
For j := 1 to n do
c [i, j] := a [i, j] + b [i, j];
Writeln ('Ma tran thu ba: ');
For i := 1 to m do
Begin
For j := 1 to m do
Write (c [i, j]);
Writeln;
End;
For i := 1 to m do
For j := 1 to n do
d [i, j] := a [i, j] - b [i, j];
Writeln ('Ma tran thu tu la: ');
For i := 1 to m do
Begin
For j := 1 to m do
Write (d [i, j]);
Writeln;
End;
Readln;
End.

Chúc bạn thành công!