< p>
begin
tam:=A[i];
A[i]:=a[j];
A[j]:=tam;
end;
end;
procedure xuli;
var i:integer;
begin
assign(f,fo);
rewrite(f);
for i:=1 to n do
Trang 4
if b[i]=a[m] then
begin
write(f,i,' ',A[m]);
close(f);
exit;
end;
end;
begin
nhap;
sx;
xuli;
end.
Bài 4: Dãy tuyến tính
Một dãy tuyến tính là 1 bộ 3 có thứ tự (s1,s2,s3) thỏa mãn s2-s1=s3-s2
Ví dụ: (1,2,3), (2,4,6), (14,21,28) là các dãy tuyến tính
Cho trước S (3<=S<=30) số nguyên tăng thuộc đọan [1,100], đếm số các dãy tuyến tính
Dữ liệu: Cho trong tập tin văn bản LSEQ.INP, dòng đầu là số nguyên S, dòng tiếp theo là S số
nguyên, cách nhau ít nhất 1 khỏang trắng
Kết quả: Cho trong tập tin văn bản LSEQ.OUT, chứa số nguyên duy nhất chỉ số dãy tuyến tính
tìm được.
Ví dụ:
LSEQ.INP
LSEQ.OUT
7
1 2 3 4 6 8 9
5
Giải thích:
5 dãy tuyến tính tìm được là:
1 2 3
2 3 4
2 4 6
3 6 9
4 6 8
Chương trình:
program b2;
type mang=array[1 30] of integer;
var n:integer;a:mang;f:text;
const fi='lseq.inp';
fo='lseq.out';
procedure nhap;
var i:integer;
begin
assign(f,fi);
reset(f);
read(f,n);
for i:=1 to n do read(f,A[i]);
close(f);
Trang 5
end;
function kt(a,b,c:integer):boolean;
begin
if b-a=c-b then kt:=true else kt:=false;
end;
procedure xuli;
var i,j,k,bao:integer;
begin
assign(f,fo);
rewrite(f);
bao:=0;
for i:=1 to n-2 do
for j:=i+1 to n-1 do
for k:=j+1 to n do
if kt(A[i],A[j],A[k]) then inc(bao);
write(f,bao);
close(f);
end;
begin
nhap;
xuli;
end.
Bài5:
Nhập một dãy A có N số tự nhiên (N<40) và 1 số K. Hãy xuất ra các phần tử có số lần
xuất hiện trong dãy A từ K lần trở lên ( Mỗi số chỉ xuất 1 lần)
Dữ liệu nhập: file DAYSO.INP:
- Dòng 1: 2 số N, K giữa 2 số cách nhau 1 khỏang trắng
- Dòng 2: Dãy A
Kết quả: file DAYSO.OUT: xuất các số thỏa điều kiện trên, trường hợp không có số nào thỏa
thì xuất số -1
DAYSO.INP
DAYSO.OUT
6 2
1 2 2 3 6 6
2 6
Chương trình:
program bt;
type mang=array[1 50] of integer;
var n,k:integer;a:mang;f:text;
const fi='dayso.inp';
fo='dayso.out';
procedure nhap;
var i:integer;
begin
assign(f,fi);
reset(f);
Trang 6
read(f,n,k);
for i:=1 to n do
read(f,A[i]);
close(f);
end;
procedure xuli;
var i,j,bao,t:integer;
begin
assign(f,fo);
rewrite(f);
t:=0;
for i:=1 to n do
begin
bao:=0;
for j:=i to n do
if A[j]=A[i] then inc(bao);
if bao=k then
begin
write(f,A[i],' ');
t:=1;
end;
end;
if t=0 then write(f,'-1');
close(f);
end;
begin
nhap;
xuli;
end.
Bài 6 :
Cho 5 số. Trong 5 số đó:
Nếu cả 5 số bằng nhau thi in ra số 1, ngược lại
Nếu có 4 số bằng nhau thì in ra số 2, ngược lại
Nếu có 3 số bằng nhau và 2 số còn lại cũng bằng nhau thì in ra số 3, ngược lại
Nếu có 3 số bằng nhau thì in ra số 4, ngược lại
Nếu có 2 cặp số bằng nhau thì in ra 5, ngược lại
Nếu có 2 số bằng nhau thì in ra 6, ngược lại in ra 7.
Chương trình:
program bai;
type mang=array[1 5] of integer;
var f:text;a,b:mang;
const fo='test.out';
procedure nhap;
var i:integer;
Trang 7
begin
randomize;
for i:=1 to 5 do A[i]:=random(5);
end;
procedure xuli;
var i,j,k:integer;
begin
assign(f,fo);
rewrite(f);
for i:=1 to 5 do write(f,A[i],' ');
k:=0;
for i:=1 to 4 do
for j:=i+1 to 5 do
if A[i]=A[j] then inc(k);
writeln(f);
if k=10 then write(f,1) else
if k=6 then write(f,2) else write(f,7-k);
close(f);
end;
begin
nhap;
xuli;
end.
Bài 7:
Nhập dãy số thực a và số k. Xét xem trong dãy có k số dương đứng cạnh nhau hay không?
Dữ liệu nhập: Nhập từ bàn phím: dãy a và số k
Dữ liệu xuất: Trả lời có hay không.
Ví dụ:
-1 2 3 4 -2 -4 4 5 -3 4 5 6
3
=> Có
Chương trình:
uses crt;
type mang=array[1 20] of real;
var a:mang; n,k:integer;
procedure nhap( var a:mang; var n, k:integer);
var i:integer;
begin
write('Nhap so pt cua day: ');
readln(n);
for i:=1 to n do
begin
write('Nhap pt thu A[',i,']:');
readln(a[i]);
end;
Trang 8
write('Nhap vao so k can kiem tra: ');
readln(k);
end;
function xuly(a:mang;n,k:integer): boolean;
var i,d,d1:integer;f:boolean;
begin
d:=0;
d1:=0;
f:=false;
for i:=1 to n do
begin
if a[i]>0 then d1:=d1+1
else d1:=0;
if d1=k then d:=d+1;
end;
if d > 0 then f:=true;
xuly:=f;
end;
begin
clrscr;
nhap(a,n,k);
if xuly(a,n,k) then write('Co ',k,' so duong dung canh nhau.')
else write('Khong co ',k,' so duong dung canh nhau.');
readln;
end.
Bài 8:
Nhập dãy số thực a. Tìm các số của dãy bằng tổng 2 số khác trong dãy.
Ví dụ:
4
6 9 4 2
=> 6 = 4 + 2
Chương trình:
uses crt;
type mang=array[1 20] of real;
var a:mang;
n:integer;
procedure nhap( var a:mang; var n:integer);
var i:integer;
begin
write('Nhap so pt cua day: ');
readln(n);
for i:=1 to n do
begin
write('Nhap pt thu A[',i,']:');
readln(a[i]);
Trang 9
end;
end;
procedure xuly(a:mang;n:integer);
var i,j,k:integer;
begin
for i:=1 to n do
for j:=1 to n-1 do
for k:=j+1 to n do
if (i<>j) and (i<>k) and (a[i]=a[j]+a[k]) then
writeln(a[i]:0:1,' = ', a[j]:0:1,' + ',a[k]:0:1);
end;
begin
clrscr;
nhap(a,n);
xuly(a,n);
readln;
end.
Bài 9:
Có bao nhiêu số có 2 chữ số có tính chất sau: Mỗi số trừ đi số viết theo thứ tự ngược lại
là 1 số chính phương.
Chương trình:
uses crt;
function chinhphuong(n:integer):boolean;
begin
chinhphuong:=false;
if frac(sqrt(n))=0 then chinhphuong:=true;
end;
procedure kt;
var a,k,b,c,d,dem:integer;l:boolean;
begin
k:=10;dem:=0;
writeln('Cac so co 2 chu so thoa man tinh chat tren la:');
while (k<100) do
begin
a:=k mod 10;
b:= k div 10;
c:= a*10+b;
d:=k-c;
if d>0 then
begin
if chinhphuong(d) then
begin
writeln('So: ',k,' So nguoc lai: ',c,' So-So nguoc lai: ',d);
writeln('So chinh phuong la: ',d);
dem:=dem+1;
end;
Trang 10
end;
k:=k+1;
end;
writeln('Vay co ',dem,' so thoa tinh chat tren ');
end;
begin
clrscr;
kt;
readln;
end.
Bài 10:
Nhập số thực x. Tìm phần nguyên có mấy chữ số, in ra màn hình chữ số lớn nhất.
Ví dụ:
X=12345.78
Phần nguyên có 5 chữ số
Chữ số lớn nhất là 5.
Chương trình:
Uses crt;
type sn=array[1 30] of integer;
var x:real; d:integer;
procedure nhap( var x: real);
begin
write('Nhap 1 so thuc bat ky: ');
readln(x);
end;
procedure dem( x: real);
var n:longint;
begin
n:=trunc(x);
d:=0;
while (n<>0) do
begin
n:= n div 10;
d:=d+1;
end;
writeln('So ',x:0:2,' phan nguyen co ',d,' chu so.');
end;
procedure tim_so_lon(x:real);
var l,i,b,max:integer;n:longint;ma:sn;
begin
n:=trunc(x);
i:=1;
repeat
ma[i]:=n mod 10;
i:=i+1;
Trang 11
n:=n div 10;
until n=0;
max:=ma[1];
for l:=2 to i-1 do
if ma[l]>=max then max:=ma[l];
writeln('So lon nhat trong cac so o phan nguyen la: ',max);
end;
begin
clrscr;
nhap(x);
dem(x);
tim_so_lon(x);
readln;
end.
Bài 11:
Viết chương trình nhập vào số kg gạo. Giả sử ta có 1 số bao như sau: 20 kg, 10 kg, 5 kg, 2
kg, 1 kg.
Tìm tất cả các cách cho gạo vào bao tương ứng với số gạo đã có.
Ví dụ:
- Nhập số kg gạo: 8
- Cách 1:
+ Bao 1kg: 8
- Cách 2:
+ Bao 2kg: 1
+ Bao 1kg: 6
- Cách 3:
+ Bao 5kg: 1
+ Bao 1: 3
- Cách 4:
+ Bao 5: 1
+ Bao 2: 1
+ Bao 1: 1
- Cách 5:
+ Bao 2 kg: 4
- Cách 6:
+ Bao 5 kg: 1
+ Bao 1 kg: 3
- Cách 7:
+ Bao 2 kg: 2
+ Bao 1 kg: 4
Chương trình:
uses crt;
var a,b20,b10,b5,b2,b1,c:integer;
begin
Trang 12
clrscr;
write('Nhap vao so kg gaïo: ');
readln(a);
c := 1;
for b20 := 0 to a div 20 do
for b10 := 0 to a div 10 do
for b5 := 0 to a div 5 do
for b2 := 0 to a div 2 do
for b1:=0 to a do
begin
if b20*20+b10*10+b5*5+b2*2+b1=a then
begin
writeln('==> Cach: ',c);
c := c + 1;
if b20>0 then writeln('Bao 20: ',b20);
if b10>0 then writeln('Bao 10: ',b10);
if b5>0 then writeln('Bao 5: ',b5);
if b2>0 then writeln('Bao 2: ',b2);
if b1>0 then writeln('Bao 1: ',b1);
end; end;
readln;
end.
Bài 12:
Nhập vào 1 số n (n>5). Hãy phân tích n thành tổng 3 số nguyên tố
Ví dụ :
6
=> 6 = 2 + 2 + 2
Chương trình:
program tinhtong;
uses crt;
var n1:integer;
procedure nhap(var n:integer);
begin
write('Nhap n (n>5): ');
readln(n);
if n<5 then
repeat
write('Nhap lai: ');
readln(n);
until(n>5);
end;
function nto(x:integer):boolean;
var i:integer;
begin
nto:=false;
Trang 13
for i:=2 to trunc(sqrt(x)) do
if x mod i=0 then exit;
nto:=true;
end;
procedure xet(n:integer);
var i,t,j:integer;
begin
for i:=2 to n do
for t:=2 to n do
for j:=2 to n do
if (i+t+j=n) then
if (nto(i)) then
if (nto(t)) then
if (nto(j)) then
begin
writeln(n:4,' = ':3,i:4,' + ':3,t:4,' + ':3,j:4);
writeln;
end;
end;
begin
clrscr;
nhap(n1);
xet(n1);
readln;
end.
Bài 13 :
Viết chương trình nhập vào 1 số nguyên dương n ( 0 < n < = 32000). Hày cho biết số nguyên
này là bội của tổng tất cả các chữ số của nó hay không? Nếu không thì hãy tìm một số nguyên
dương m nhỏ hơn gần n nhất để cho m thỏa mãn tính chất trên?
Dữ liệu nhập: Nhập từ bàn phím
Dữ liệu xuất: Xuất ra File BAI.out.
Ví dụ 1:
Nhập: 12
File BAI.out:
Số 12 là bội của 1 + 2
Ví dụ 2:
Nhập: 25
File BAI.out:
Số 25 không là bội của 2 + 5, số nguyên dương nhỏ hơn gần số 25 nhất là số 24
thỏa mãn tính chất trên ( Vì số 24 là bội của 2 + 4 )
Chương trình:
program nguyenduong;
uses crt;
type songuyen=array[1 6] of integer;
var A:songuyen;n1,i1:integer;
Trang 14
function kiemtra1(n2:integer):integer;
var h:integer;
begin
h:=0;
while n2<>0 do
begin
n2:=n2 div 10;
h:=h+1;
end;
kiemtra1:=h;
end;
procedure nhap(var n:integer);
begin
write('Nhap vao mot so nguyen duong: ');
readln(n);
if (n<=0) and (n>32000) then
repeat
write(' Nhap lai mot so khac: ');
readln(n);
until (n>0) and (n<=32000);
end;
procedure xet(var i:integer;n:integer);
var l,k,t:integer;
begin
i:=kiemtra1(n);
l:=n;
for t:=1 to i do
begin
A[t]:=l mod 10;
l:=l div 10;
end;
end;
procedure tongso(i,n:integer;var tong:integer);
var t:integer;
begin
tong:=0;
for t:=1 to i do
tong:=tong+A[t];
end;
procedure boi(i,n:integer);
var t,tong1,m:integer;
begin
tongso(i,n,tong1);
if (n mod tong1=0) then
begin
write(n,' la boi cua tong ');
for t:=i downto 1 do
if t<>1 then write(A[t],' + ')
Trang 15
else write(A[t]);
end
else begin
write(n,' khong la boi cua tong ');
for t:=i downto 1 do
if t<>1 then write(A[t],' + ') else writeln(A[t]);
m:=n;
repeat
m:=m-1;
xet(i,m);
tongso(i,m,tong1);
until (m mod tong1=0);
write('So nguyen duong nho hon gan so ',n,' nhat la so ',m,' thoa man dieu kien vi ',m,' la
boi cua tong ');
for t:=i downto 1 do
if t<>1 then write(A[t],' + ') else writeln(A[t],' ');
end;
end;
begin
clrscr;
nhap(n1);
xet(i1,n1);
boi(i1,n1);
readln;
end.
Bài 14 : Ma trận đều theo hàng, cột:
Một ma trận n x n gọi là ma trận đều theo hàng, cột nếu tổng các số hạng theo từng hàng hoặc
từng cột đều bằng nhau. Hãy lập trình xem 1 ma trận có phải là ma trận đều theo hàng, cột hay
không?
- Dữ liệu nhập: Nhập từ bàn phím: số nguyên n và giá trị từng phần tử của ma trận.
- Dữ liệu xuất: Xuất ra màn hình trả lời đúng hay sai.
Ví dụ:
3
1 6 7
2 7 5
11 1 2
=> Đúng vì tổng hàng hay tổng cột đều bằng 14.
Chương trình:
program matrandeu;
uses crt;
type songuyen=array[1 60,1 60] of integer;
songuyen1=array[1 60] of integer;
var A:songuyen; n1:integer; B:songuyen1;
procedure nhap(var n:integer);
var i,t:integer;
Trang 16
begin
write('Nhap vao so hang cua ma tran vuong: ');
readln(n);
writeln('Nhap vao gia tri cua ma tran ');
for i:=1 to n do
for t:=1 to n do
begin
write('A[',i,',',t,']= ');
readln(A[i,t]);
writeln;
end;
end;
procedure tinhtong(n:integer);
var i,y,t,h:integer;
begin
y:=1;
for i:=1 to n do
begin
h:=0;
for t:=1 to n do
h:=h+A[i,t];
B[y]:=h;
y:=y+1;
end;
for i:=1 to n do
begin
h:=0;
for t:=1 to n do
h:=h+A[t,i];
B[y]:=h;
y:=y+1;
end;
end;
procedure xet(n:integer);
var c:boolean;d,i:integer;
begin
c:=true;
d:=B[1];
for i:=2 to n*2 do
if B[i]<>d then
begin
c:=false;
break;
end;
if c=true then
begin
writeln('Day dung la ma tran deu');
writeln('Vi no co tong tung hang cot deu la ',d);
Trang 17
end
else writeln('Day khong phai la ma tran deu');
end;
begin
clrscr;
nhap(n1);
tinhtong(n1);
xet(n1);
readln;
end.
Bài 15:
Ma trận vuông A gọi là ma phương nếu tổng mỗi hàng, tổng mỗi cột, tổng mỗi đường chéo
bằng nhau. Nhập ma trận A, kiểm tra tính chất ma phương.
Chương trình:
uses crt;
type matran=array[1 100,1 100] of integer;
var a: matran; n:integer;
procedure nhap;
var i,j:integer;
begin
write('Nhap so hang, cot cua ma tran: ');
readln(n);
for i:=1 to n do
for j:=1 to n do
begin
write('Nhap gt pt thu A[',i,',',j,']:');
read(a[i,j]);
end;
end;
function tong1hang( i:integer): integer;
var k,s:integer;
begin
s:=0;
for k:=1 to n do
s:=s+a[i,k];
tong1hang:=s;
end;
function tong1cot(j:integer):integer;
var k,s:integer;
begin
s:=0;
for k:=1 to n do
s:=s+a[k,j];
tong1cot:=s;
end;
Trang 18
procedure xuly;
var s,s1,s2,i,j:integer;
begin
s:=tong1hang(1);
s1:=0;
s2:=0;
for i:=1 to n do
begin
if ((s<>tong1hang(i)) or (s<>tong1cot(i))) then
begin
writeln('Khong phai ma phuong!');
exit;
end;
s1:=s1+a[i,i];
s2:=s2+a[i,n-i+1];
end;
if (s<>s1) or (s<>s2) then writeln('Khong phai ma phuong!')
else writeln('Do la ma phuong');
end;
procedure xuat;
var i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:4);
writeln;
end;
end;
begin
clrscr;
nhap;
xuat;
xuly;
readln;
end.
Bài 16:
Một ma trận gọi là thưa nếu số phần tử 0 chiếm quá một nửa. Cho ma trận các số thực và
kiểm tra tính chất thưa của ma trận đó.
Dữ liệu nhập: cho trong file Bai.inp gồm:
- Dòng 1: Số nguyên n là số dòng và m là số cột của ma trận
- Các dòng còn lai là giá trị từng phần tử của ma trận.
Dữ liệu xuất: Xuất ra file Bai.out gồm 1 dòng duy nhất trả lời đúng hay sai.
Ví dụ: FILE BAI.INP
3 3
Trang 19
0 4 0
0 0 0
0 8 7
FILE BAI.OUT:
Đúng là ma trận thưa
Chương trình:
program vd;
const fi='bai.inp';
fo='bai.out';
type ar=array[1 15,1 15]of real;
var n,m:byte; a:ar; f:text;
procedure nhap;
var i,j:byte;
begin
assign(f,fi);
reset(f);
read(f,n,m);
for i:=1 to n do
for j:=1 to m do
read(f,a[i,j]);
close(f);
end;
procedure xl;
var i,j,d:byte;
begin
assign(f,fo);
rewrite(f);
d:=0;
for i:=1 to n do
for j:=1 to m do
if a[i,j]=0 then inc(d);
if d*2>n*m then writeln(f,'dung, la ma tran thua')
else writeln(f,'sai, khong la ma tran thua');
close(f);
end;
begin
nhap;
xl;
end.
Bài 17:
Nhập ma trận A các số nguyên. Tìm vị trí các phần tử đạt max.
Dữ liệu nhập: cho trong file Bai.inp gồm:
- Dòng 1: Số nguyên n là số dòng và m là số cột của ma trận
- Các dòng còn lai là giá trị từng phần tử của ma trận.
Dữ liệu xuất: Xuất ra file Bai.out gồm các dòng là vị trí của các phần tử đạt max.
Trang 20
Ví dụ:
FILE BAI .INP:
3 4
2 4 5 3
2 7 9 9
9 3 2 1
FILE BAI.OUT:
Vị trí các phần tử đạt max:
2 3
2 4
3 1
Chương trình:
program vd;
const fi='bai.inp';
fo='bai.out';
type ar=array[1 50,1 50]of real;
var n,m:byte; a:ar; f:text;
procedure nhap;
var i,j:byte;
begin
assign(f,fi);
reset(f);
read(f,n,m);
for i:=1 to n do
for j:=1 to m do
read(f,a[i,j]);
close(f);
end;
function timmax:real;
var i,j:byte; max:real;
begin
max:=a[1,1];
for i:=1 to n do
for j:=1 to m do
if a[i,j]>max then
max:=a[i,j];
timmax:=max;
end;
procedure xl;
var i,j,d:byte; max:real;
begin
assign(f,fo);
rewrite(f);
max:=timmax;
for i:=1 to n do
for j:=1 to m do
if a[i,j]=max theN
Trang 21
writeln(f,i,' ',j);
close(f);
end;
begin
nhap;
xl;
end.
Bài 18:
Nhập ma trận A các số thực. Xét xem:
a) Trong ma trận có số dương hay không ?
b) Tất cả các phần tử của ma trận đều dương ?
Dữ liệu nhập: Nhập từ bàn phím.
Dữ liệu xuất: Xuất ra file BAI.OUT:
- Dòng 1: Trả lời câu a có hay không.
- Dòng 2: Trả lời câu b có hay không.
Ví dụ:
SỐ DÒNG: 3
SỐ CỘT: 3
1 -9 0
-1 0 1
-2 2 4
FILE BAI.OUT:
a) Có
b) Không
Chương trình:
program vd;
const fo='bai.out';
type ar=array[1 50,1 50]of real;
var n,m:byte; a:ar; f:text;
procedure nhap;
var i,j:byte;
begin
write('moi nhap so dong:');
readln(n);
write('moi nhap so cot:');
readln(m);
for i:=1 to n do
for j:=1 to m do
begin
write('a[',i,',',j,'=');
readln(a[i,j]);
end;
end;
function kt1(a:ar;n,m:byte):boolean;
var i,j:byte;
begin
Trang 22
kt1:=false;
for i:=1 to n do
for j:=1 to m do
if a[i,j]>0 then kt1:=true;
end;
function kt2(a:ar;n,m:byte):boolean;
var i,j:byte;
begin
kt2:=true;
for i:=1 to n do
for j:=1 to m do
if a[i,j]<0 then kt2:=false;
end;
begin
nhap;
assign(f,fo);
rewrite(f);
if kt1(a,n,m) then writeln(f,'a) co')else writeln(f,'a) khong');
if kt2(a,n,m) then writeln(f,'b) co')else writeln(f,'b) khong');
close(f);
end.
Bài 19:
Nhập ma trận A nguyên. Kiểm tra xem có 2 hàng giống nhau hay không?
Dữ liệu nhập: cho trong file Bai.inp gồm:
- Dòng 1: Số nguyên n là số dòng và m là số cột của ma trận
- Các dòng còn lai là giá trị từng phần tử của ma trận.
Dữ liệu xuất: Xuất ra file bai.out
Ví dụ:
FILE BAI.INP:
3 4
1 1 2 2
1 1 2 2
1 2 1 1
FILE BAI.OUT: CÓ
Chương trình:
program vd;
const fi='bai.inp';
fo='bai.out';
type ar=array[1 50,1 50]of byte;
arr=array[1 50]of byte;
var n,m:byte; a:ar; f:text;
procedure nhap;
var i,j:byte;
begin
assign(f,fi);
reset(f);
Trang 23
read(f,n,m);
for i:=1 to n do
for j:=1 to m do
read(f,a[i,j]);
close(f);
end;
procedure sx(n:byte;var b:arr);
var i,j:byte;
begin
for i:=1 to m do
b[i]:=a[n,i];
end;
procedure xl;
var i,j,k:byte;
b:arr;
kt:boolean;
begin
assign(f,fo);
rewrite(f);
for i:=1 to n do
begin
k:=0;
for j:=1 to m do
begin
sx(i,b);
inc(k);
if a[i,j]=b[k] then
kt:=true else kt:=false;
end;
end;
if kt then writeln(f,'co')else writeln(f,'khong');
close (f);
end;
begin
nhap;
xl;
end.
Bài 20:
Nhập ma trận A.
a) Tìm hàng có tổng lớn nhất.
b) Tìm tất cả các hàng có tổng lớn nhất.
Dữ liệu nhập: cho trong file Bai.inp gồm:
- Dòng 1: Số nguyên n là số dòng và m là số cột của ma trận
- Các dòng còn lai là giá trị từng phần tử của ma trận.
Dữ liệu xuất: Xuất ra file Bai.out gồm :
- Dòng 1: Xuất hàng có tổng lớn nhất.
Trang 24
- Các dòng tiếp theo là vị trí của hàng có tổng lớn nhất.
Ví dụ:
FILE BAI .INP:
4 4
1 2 3 4
1 2 1 1
4 2 1 3
FILE BAI.OUT:
a) Hàng 1 có tổng lớn nhất ( hoặc hàng 3)
b) Các hàng có tổng lớn nhất là:
1
3
Chương trình:
program vd;
const fi='bai.inp';
fo='bai.out';
type ar=array[1 50,1 50]of byte;
tong=record x,y:integer;
end;
arr=array[1 50]of tong;
var n,m:byte; a:ar; f:text;
procedure nhap;
var i,j:byte;
begin
assign(f,fi);
reset(f);
read(f,n,m);
for i:=1 to n do
for j:=1 to m do
read(f,a[i,j]);
close(f);
end;
procedure sx(var b:arr);
var i,j:byte; d:tong;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if b[i].x
begin
d:=b[i];
b[i]:=b[j];
b[j]:=d;
end;
end;
procedure xl;
var i,j:byte; t:integer; b:arr;
begin
Trang 25
assign(f,fo);
rewrite(f);
for i:=1 to n do
begin
t:=0;
for j:=1 to m do
t:=t+a[i,j];
b[i].x:=t;
b[i].y:=i;
end;
sx(b);
writeln(f,b[1].y);
for i:=1 to n do
if b[i].x=b[1].x then write(f,b[i].y,' ');
close(f);
end;
begin
nhap;
xl;
end.
Bài 21:
Nhập dãy số thực a. Xét xem:
a/ Đây là dãy tăng ?
b/ Đây là dãy đan dấu ? ( Dãy đan dấu là dãy không có số 0, các số dương và âm xem kẽ nhau )
Dữ liệu nhập: Cho trong file BAI .INP gồm 2 dòng:
- Dòng 1: Số n là số phần tử của dãy.
- Dòng 2: Dãy số thực a.
Dữ liệu xuất: Xuất ra file BAI .out gồm 2 dòng:
- Dòng 1: Trả lời câu a
- Dòng 2: Trả lời câu b
Ví dụ:
File BAI.inp:
7
9 -4 3 -8 4 -1 6
File BAI.out
a/ Không
b/ Có
Chương trình:
program vd;
const fi='bai.inp';
fo='bai.out';
type ar=array[1 100]of real;
var a:ar; n:byte; f:text;
procedure nhap;
var i:byte;