program BaiToan;
const
MAX = 100;
var
n, i, j, sum, countSquare, countGreater, countNotBelong: integer;
arr: array[1..MAX] of integer;
squareArr: array[1..MAX] of integer;
avg: real;
a, b: integer;
// Hàm kiểm tra số chính phương
function isSquare(num: integer): boolean;
var
root: integer;
begin
root := Trunc(sqrt(num));
isSquare := root * root = num;
end;
begin
// Nhập số phần tử của dãy
repeat
write('Nhap so phan tu cua day (khong qua ', MAX, '): ');
readln(n);
until (n > 0) and (n <= MAX);
// Nhập dãy số nguyên từ bàn phím
writeln('Nhap cac phan tu cua day:');
for i := 1 to n do
begin
write('Nhap phan tu thu ', i, ': ');
readln(arr[i]);
end;
// Tính trung bình cộng của dãy
sum := 0;
for i := 1 to n do
sum := sum + arr[i];
avg := sum / n;
// Tìm số chính phương và đếm số lượng của chúng
countSquare := 0;
for i := 1 to n do
if isSquare(abs(arr[i])) then // Sử dụng giá trị tuyệt đối khi kiểm tra số chính phương
begin
countSquare := countSquare + 1;
squareArr[countSquare] := arr[i];
end;
// In ra các số chính phương và số lượng của chúng
writeln('Co ', countSquare, ' so chinh phuong:');
for i := 1 to countSquare do
write(squareArr[i], '; ');
writeln;
// Tìm các số lớn hơn trung bình cộng của dãy
countGreater := 0;
writeln('Cac so lon hon TBC:');
for i := 1 to n do
if arr[i] > avg then
begin
countGreater := countGreater + 1;
write(arr[i], '; ');
end;
writeln;
// Tìm số nhỏ nhất và lớn nhất trong dãy
a := arr[1];
b := arr[1];
for i := 2 to n do
begin
if arr[i] < a then
a := arr[i];
if arr[i] > b then
b := arr[i];
end;
// Tìm các số không thuộc dãy
countNotBelong := 0;
writeln('Cac so khong thuoc day:');
for j := a + 1 to b - 1 do
begin
for i := 1 to n do
begin
if arr[i] = j then
break;
if i = n then
begin
countNotBelong := countNotBelong + 1;
write(j, '; ');
end;
end;
end;
// Kiểm tra nếu không có số nào không thuộc dãy
if countNotBel then
writeln('Khong co so nao khong thuoc day.');
writeln;
end.