Đề bài: Cho mảng a gồm n phần tử kiểu nguyên có trong tệp dữ liệu DL.PAS . Lập trình thực hiện các công việc sau . Kết quả lưu trong tệp KQ. PAS 1. Đếm số phần tử lẻ chia hết cho 7 2. Tính tổng các phần từ thuộc [10.30] 3. Tính trung bình cộng các phân tử âm lẻ 4. Đếm các số là số nguyên tố có trong dãy.
2 câu trả lời
Chương trình:
uses crt;
var f1, f2: text;
a: array[1..500] of longint;
i,n,z,dema,demc,demd: integer; tongb: longint; tongc: real;
lasnt: boolean;
begin
{Khai bao bien ghi file}
assign(f1, 'dl.pas');
reset(f1);
assign(f2, 'kq.pas');
rewrite(f2);
{Doc du lieu}
readln(f1,n);
for i:=1 to n do
readln(f1,a[i]);
{Cau a}
for i:=1 to n do
if ((a[i] mod 2 = 1) and (a[i] mod 7 = 0)) then dema:=dema+1;
{Cau b}
for i:=1 to n do
if ((a[i]>=10) and (a[i]<=30)) then
tongb:=tongb+a[i];
{Cau c}
for i:=1 to n do
if ((frac(a[i]/2) = -0.5) and (a[i] < 0)) then
begin
tongc:=tongc+a[i];
demc:=demc+1;
end;
if (demc<>0) then tongc:=tongc/demc else tongc:=0;
{Cau d}
for i:=1 to n do
begin
if ((a[i] <> 0) and (a[i] <> 1)) then
begin
for z:=2 to a[i]-1 do
begin
if (a[i] mod z = 0) then lasnt:=false;
end;
end
else lasnt:= false;
if (lasnt=true) then
begin
demd:=demd+1;
lasnt:=true;
end
else lasnt:=true;
end;
{Ghi ket qua: }
writeln(f2, 'Cau a: So luong phan tu le chia het cho 7 la: ',dema);
writeln(f2, 'Cau b: Tong cac so trong day co gia tri tu 10 den 30 la: ',tongb);
writeln(f2, 'Cau c: Trung binh cong cac so trong day co gia tri am la: ',tongc:0:0);
writeln(f2, 'Cau d: So luong so nguyen to: ',demd);
close(f1);
close(f2);
end.
====================
Dữ liệu vào (DL.pas)
15
7
21
14
18
40
26
-4
-7
2
3
5
7
12
15
13
----------------------
Đầu ra:
Cau a: So luong phan tu le chia het cho 7 la: 3
Cau b: Tong cac so trong day co gia tri tu 10 den 30 la: 119
Cau c: Trung binh cong cac so trong day co gia tri am la: -7
Cau d: So luong so nguyen to: 7
program bai_giai;
var f,g:text;
A:array[1..10000] of integer;
n,i,dl,t,ta,da,dnt:integer;
function ktnt(k:integer):boolean;
var r:integer;
begin
ktnt:=false;
if k<2 then exit;
for r:=2 to trunc(sqrt(k)) do
if k mod r=0 then exit;
ktnt:=true;
end;
BEGIN
Assign(f,'DL.PAS'); reset(f);
Assign(g,'KQ.PAS'); rewrite(g);
readln(f,n);
for i:=1 to n do read(f,A[i]);
dl:=0; t:=0; ta:=0; da:=0; dnt:=0;
for i:=1 to n do
begin
if (A[i] mod 2=1) and (A[i] mod 7=0) then dl:=dl+1;
if (A[i]>=10) and (A[i]<=30) then t:=t+A[i];
if (A[i]<0) and (A[i] mod 2=1) then
begin
ta:=ta+A[i]; da:=da+1;
end;
if ktnt(A[i]) then dnt:=dnt+1;
end;
writeln(g,dl);
writeln(g,t);
writeln(g,ta/da:0:2);
writeln(g,dnt);
close(f); close(g);
end.