Bài 1: Nhập dãy số thực a. Tính trung bình cộng các số âm.
Bài giải:
uses crt;
var a:array[1..100] of real;
i,n,dem:integer;
tbc,tong:real;
begin
clrscr;
dem:=0;
tong:=0;
write('Nhap n:');readln(n);
for i:=1 to n do
begin
write('Nhap a[',i,']:');
readln(a[i]);
end;
for i:=1 to n do
if a[i]<0 then
begin
dem:=dem+1;
tong:=tong+a[i];
end;
tbc:=tong/dem;
writeln('TBC cac so am:',tbc:2:3);
readln;
end.
Bài 2: Nhập dãy số nguyên. Tính trung bình cộng các số lẽ.
Bài giải:
uses crt;
var a:array[1..100] of integer;
i,n,dem:integer;
tbc,tong:real;
begin
clrscr;
dem:=0;
tong:=0;
write('Nhap n:');readln(n);
for i:=1 to n do
begin
write('Nhap a[',i,']:');
readln(a[i]);
end;
for i:=1 to n do
if a[i] mod 2=1 then
begin
dem:=dem+1;
tong:=tong+a[i];
end;
tbc:=tong/dem;
writeln('TBC cac so am:',tbc:2:3);
readln;
end.
Bài 3: Sinh ngẫu nhiên dãy n số nguyên. Tìm các số trong dãy thỏa mãn định lý Pytago.
Bài giải:
uses crt;
var a:array[1..100] of integer;
i,n,j,k:integer;
begin
clrscr;
write('Ban muon chon bao nhieu so ngau nhien:');readln(n);
writeln;
randomize;
for i:=1 to n do a[i]:=random(100);
for i:=1 to n do write(a[i]:3);
for i:=1 to n do
for j:=i to n do
for k:=1 to n do
if (i<>j) and (i<>k) and (k<>j) and (sqr(a[i])+sqr(a[j])=sqr(a[k])) then
writeln(a[i],'^2 +',a[j],'=',a[k],'^2');
readln;
end.
Bài 4: Nhập dãy số nguyên.Tìm các số trong dãy thỏa tính chất a3+b3+c3 = 100a+10b+c.
Bài giải:
uses crt;
var a:array[1..100] of integer;
i,j,k,n:integer;
begin
clrscr;
write('nhap n:');readln(n);
for i:=1 to n do
begin
write('Nhap a[',i,']:');
readln(a[i]);
end;
for i:=1 to n do
for j:=i to n do
for k:=1 to n do
iff(i<>j)and(i<>k)and(k<>j)and (sqr(a[i])*a[i]+sqr(a[j])*a[j]+sqr(a[k])*a[k]=100*a[i]+10*a[j]+a[k]) then
writeln(a[i], ' ,a[j], ‘ ,a[k]);
readln;
end.
Bài 5: Sinh ngẫu nhiên n số nguyên (n<200). Đếm và tính tổng các số lẽ của chúng.
Bài giải:
uses crt;
var a:array[1..100] of integer;
n,i,dem,tong:integer;
begin
clrscr;
tong:=0;
write('nhap n:');readln(n);
dem:=0;
randomize;
for i:=1 to n do a[i]:=random(200);
for i:=1 to n do
begin
write(a[i]:5);
if a[i] mod 2=1 then dem:=dem +1;
tong:=tong+a[i];
end;
writeln;
writeln('Co ',dem,' so le.');
writeln('Tong cac so le:',tong);
readln;
end.
Bài 6: Nhập dãy số nguyên. Tìm phần tử lớn nhất.
Bài giải:
uses crt;
var a:array[1..100] of integer;
i,max,n:integer;
begin
clrscr;
write('nhap n:');readln(n);
for i:=1 to n do
begin
write('Nhap a[',i,']:');
readln(a[i]);
end;
for i:=1 to n do
begin
max:=a[1];
if a[i]>a[1] then max:=a[i];
end;
writeln('GTLN :',max);
readln;
end.
Bài 7: Nhập dãy số thực. Tìm phần tử bé nhất.
Bài giải:
uses crt;
var a:array[1..100] of real;
i,n:integer;
min:real;
begin
clrscr;
write('Nhap n:');readln(n);
for i:=1 to n do
begin
write('Nhap a[',i,']:');
readln(a[i]);
end;
for i:=1 to n do
begin
min:=a[1];
if a[i]<a[1] then min:=a[i];
end;
writeln('GTNN :',min:2:1);
readln;
end.
Bài 8: Nhập dãy số thực. Tìm hai phần tử có tổng lớn nhất.
Bài giải:
uses crt;
var a:array[1..100] of real;
i,n,j,k:integer;
max,pt1,pt2:real;
begin
clrscr;
write('nhap n:');readln(n);
for i:=1 to n do
begin
write('Nhap a[',i,']:');
readln(a[i]);
end;
max:=a[1] + a[2];
for i:=1 to n do
for j:=i to n do
if i<>j then if (a[i]+a[j]>max) then
begin
max:=a[i]+a[j];
pt1:=a[i];
pt2:=a[j];
end;
else if (a[i]+a[j]=max) then
begin
max:=a[i]+a[j];
pt1:=a[i];
pt2:=a[j];
end;
writeln(pt1:2:1 ,' va ' , pt2:2:1,' la 2 pt co tong lon nhat.');
readln;
end.
Bài 9: Cho dãy số thực a và nhập số thực x. Kiểm tra xem x có thuộc dãy không. Nếu có chỉ ra vị trí của nó.
Bài giải:
uses crt;
var a:array[1..100] of real;
i,n,dem:integer;
x:real;
begin
clrscr;
dem:=0;
write('nhap n:');readln(n);
for i:=1 to n do
begin
write('Nhap a[',i,']:');
readln(a[i]);
end;
write('Nhap x:');readln(x);
for i:=1 to n do if x=a[i] then dem:=dem+1;
if dem=0 then writeln(x:0:1,' ko thuoc day tren.')
else
for i:=1 to n do
if x=a[i] then writeln(x:0:1,' thuoc day so tren, thuoc vitri a[',i,']');
readln;
end.
Bài 10: Cho dãy số thực a và nhập số thực x. Hãy xóa mọi số lớn hơn x trong dãy.
Bài giải:
uses crt;
var a:array[1..100] of real;
x:real;
i,n:integer;
begin
clrscr;
write('nhap n:');readln(n);
for i:=1 to n do
begin
write('Nhap a[',i,']:');
readln(a[i]);
end;
write('Nhap x:');readln(x);
write('Day so sau khi xoa bo cac so lon hon x la:');
for i:=1 to n do
if a[i]<=x then write(a[i]:6:2);
readln;
end.
Bài 11: Nhập dãy số thực a. Tìm các số trong dãy bằng tổng hai số khác trong dãy.
Bài giải:
uses crt;
var a:array[1..100] of real;
i,j,k,n:integer;
begin
clrscr;
write('Nhap n:');readln(n);
for i:=1 to n do
begin
write('Nhap a[',i,']:');
readln(a[i]);
end;
for i:=1 to n do
for j:=i to n do
for k:=1 to n do
if (k<>i) and (k<>j) and (i<>j) and (a[i]+a[j]=a[k]) then
writeln(a[k]:2:1,'=',a[i]:2:1 , '+' ,a[j]:2:1);
readln;
end.
Bài 12: Cho dãy n số nguyên a1;a2;…;an. Xếp lại dãy số theo nguyên tắc: a1 đổi chỗ cho an; a2 đổi chỗ với an-1…
Hướng dẫn: công thức đổi: 1 và n – i +1.
Bài giải:
uses crt;
var a:array[1..100] of integer;
j,i,n,tam,so:integer;
(*****)
procedure dc(var a,b:integer);
var tam:integer;
begin
tam:=a;
a:=b;
b:=tam;
end;
(*****)
begin
clrscr;
write('nhap n:');readln(n);
for i:=1 to n do
begin
write('Nhap a[',i,']:');
readln(a[i]);
end;
writeln('Sx theo QT: a[1] doi cho a[',n,'], a[2] doi cho a[',n-1,'].a[3] doi cho a[',n-2,']...');
writeln;
for i:=1 to n do write(a[i]:5);
for i:=1 to (n div 2) do dc(a[i],a[n-i+1]);
writeln;
writeln;
for i:=1 to n do
write(a[i]:5);
readln;
end.
Bài 14: Sinh ngẫu nhiên dãy n số nguyên ( n<2000). Không dùng mảng phụ, hãy chuyển các số âm về đầu dãy, các số dương về cuối dãy sao cho không làm thay đổi trật tự trước sau của các số cùng dấu.
Bài giải:
uses crt;
var a:array[1..100] of integer;
n,m,i:integer;
(*****)
procedure sx(var a,b:integer);
var tam:integer;
begin
tam:=a;
a:=b;
b:=tam;
end;
(*****)
begin
clrscr;
write('ban muon sinh ngau nhien bao nhiu so:');readln(n);
for i:=1 to n do
begin
write('Nhap a[',i,']:');
readln(a[i]);
end;
writeln('Day so ban dau:');
for i:=1 to n do
write(a[i]:3);
writeln;
writeln('Day so sau khi bien doi:');
for i:=1 to n do
if a[i]<0 then write(a[i]:3);
for i:=1 to n do
if a[i]=0 then write(a[i]:3);
for i:=1 to n do
if a[i]>0 then write(a[i]:3);
readln;
end.
Bài 15: Sinh ngẫu nhiên n số nguyên. Sắp xếp các số này theo thứ tự tăng dần. Nhập vào một số nguyên x bất kì. Hãy chen số x vào dãy và luôn thỏa mãn là dãy tăng dần. Chỉ ra vị trí chèn.
Bài giải:
uses crt;
var a:array[1..100] of integer;
n,i,j,x,k,vt:integer;
(*****)
procedure sx(var a,b:integer);
var tam:integer;
begin
tam:=a;
a:=b;
b:=tam;
end;
(*****)
begin
clrscr;
write('Ban muon nhap bao nhiu so:');readln(n);
randomize;
for i:=1 to n do a[i]:=random(20);
for i:=1 to n do write(a[i]:3);
writeln;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then sx(a[i],a[j]);
writeln('Day so sau khi xep tang dan:');
for i:=1 to n do write(a[i]:3);
writeln;
write('nhap x:');readln(x);
k:=x;
for j:=n downto 1 do
if k<a[j] then vt:=j
else if k>a[n] then vt:=n+1;
for i:=1 to n do
if x<a[i] then sx(x,a[i]);
a[n+1]:=x;
writeln('Day so sau khi chen ',x,' vao:');
for i:=1 to n+1 do write(a[i]:3);
writeln;
writeln('Vi tri chen la:',vt);
readln;
end.
Bài 16: Sinh ngẫu nhiên n số nguyên dương (n<200).
a) Xóa các số trong dãy nhỏ hơn 10.
b) Xóa các số trong dãy thuộc đoạn [50,99].
Bài giải:
uses crt;
var a:array[1..100] of integer;
n,i,j:integer;
begin
clrscr;
write('Ban muon sinh ngau nhien bao nhiu so:');readln(n);
writeln('Day so ban dau:');
randomize;
for i:=1 to n do a[i]:=random(100);
for i:=1 to n do write(a[i]:3);
writeln;
writeln('Sau khi xoa cac so nho hon 10:');
for i:=1 to n do if a[i]>10 then write(a[i]:3);
writeln;
(*****)
writeln('Sau khi xoa cac so tu 50..99 la:');
for i:=1 to n do
if (a[i]<50) or (a[i]>99) then write(a[i]:3);
readln;
end.