Câu 4: (8 điểm)
Một dãy số gồm N số nguyên dương . Tính tổng các phần tử có trong dãy số, in ra số lần xuất hiện các phần tử có trong dãy số.
– Yêu cầu: Cho một dãy số gồm N số nguyên dương. Hãy thực hiện các yêu cầu trên. Giả thiết dữ liệu được nhập đúng đắn, không cần kiểm tra
– Dữ liệu vào: Cho từ tệp văn bản có tên DAYSO.INP có dạng như sau:
+ Dòng 1: Ghi số nguyên dương N (1≤N≤100000)
+ Dòng 2: Ghi dãy N số nguyên dương a1, a2,…, an (1≤ai≤1000,i=1..n)
– Kết quả: Ghi ra tệp văn bản có tên DAYSO.OUT theo cấu trúc sau:
+ Dòng 1: In ra tổng các phần tử trong dãy số.
+ Dòng tiếp theo: In ra phần tử và số lần xuất hiện của nó.
Ví dụ:
DAYSO.INP DAYSO.OUT
8 42
6 7 8 1 8 9 2 1 6:1
7:1
8:2
1:2
2:1
uses crt;
const max=1000;
var f,f1:text;
a,sl:array[1..100000] of int64;
n,i,j,s:longint;
begin
clrscr;
assign(f,’DAYSO.INP’); reset(f);
assign(f1,’DAYSO.OUT’); rewrite(f1);
readln(f,n);
for i:=1 to n do read(f,a[i]);
for i:=1 to max do sl[i]:=0;
for i:=1 to n do
begin
inc(sl[a[i]]);
inc(s,a[i]);
end;
writeln(f1,s);
for i:=1 to max do if sl[i] > 0 then writeln(f1,i,’:’,sl[i]);
close(f);
close(f1);
readln
end.
const fi=’dayso.inp’;
fo=’dayso.out’;
var f1,f2:text;
a,b:array[1..100000]of integer;
i,n,dem,j,kt,t,dem1:integer;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,n);
for i:=1 to n do
read(f1,a[i]);
t:=0;
for i:=1 to n do
t:=t+a[i];
writeln(f2,’Tong cac phan tu trong day so la: ‘,t);
b[1]:=a[1];
dem:=1;
for i:=1 to n do
begin
kt:=0;
for j:=1 to dem do
if a[i]=b[j] then kt:=1;
if kt=0 then
begin
inc(dem);
b[dem]:=a[i];
end;
end;
for i:=1 to dem do
begin
dem1:=0;
for j:=1 to n do
if b[i]=a[j] then inc(dem1);
writeln(f2,b[i],’ xuat hien ‘,dem1,’ lan’);
end;
close(f1);
close(f2);
end.