Среднее
арифметическое элементов массива (усложненная)
Вывести
числа, большие среднего арифметического значений, записанных в файле,
имеющего структуру: сначала идет число в диапазоне от 1 до 1000 ,которое
определяет
количество последующих числовых значений в файле.
Пример входного файла:
3
5
10
15
Результат:
15
Решение:
const
N=1000;
Var
F: text;
a: array [1..N] of integer;
i: integer;
sum,
kol: integer;
avg: real;
Begin
cls;
sum:=0;
Assign(F, 'input.txt');
Reset(F);
Read(F, kol);
for
i:=1 to kol do
begin
Read(F, a[i]);
sum:=sum+a[i];
end;
avg:=sum
/ kol;
for
i:=1 to kol do
begin
if
a[i]>avg
then
writeln(a[i]);
end;
Close(F);
End.
USES CRT;
Var
arr: array
[1..99] of array
[1..2] of integer;
str:
string;
// Строка, читаемая из файла
StrLen:
integer; // Длинна строки, cчитанной из файла
SchoolStr:
string; // № школы строкой
SchoolNum:
integer; //
№ школы числом
code: integer; // Для преобразования из строки в число
RecordNum:
integer; //
Кол-во записей в файле
CurRec:
integer; // Кол-во записей в массиве
F:
text; // Файлвая переменная
i, j: integer;
// Счетчики для циклов
IsFound:
boolean; // Флаговая переменная
max: integer; // Максимальнео кол-во участников
SchoolQty:
integer; //
Кол-во школ с max участников
BEGIN
cls;
Assign(F,'file.txt');
Reset(F);
readln(F,RecordNum);
for i:=1 to
RecordNum do
Begin
// Считать очередную
строку из файла
readln(F, str);
StrLen:= Length(str);
// Вырезать номер школы из строки
SchoolStr:= TrimLeft(Copy(str,StrLen-1,StrLen));
Val(SchoolStr,SchoolNum,code);
// Проверить наличие школы в массиве
IsFound:=false;
for j:=1 to
CurRec do
begin
// Если № школы
есть,то увеличить количетсво на 1
if arr[j][1]=SchoolNum then
begin
Inc(arr[j][2]);
IsFound:=true;
break;
end;
end;
// Иначе добавить в массив строку с номером школы и кол=1
if not IsFound then
begin
Inc(CurRec);
arr[CurRec][1]:=SchoolNum;
arr[CurRec][2]:=1;
End;
End;
for i:=1 to
CurRec do
writeln('# шк:', arr[i][1], ' кол-во=', arr[i][2]);
close(F);
max:=0;
//
Найти максимум во втором столбце
for j:=1 to CurRec do
begin
if arr[j][2]>max then
max:=arr[j][2];
end;
SchoolQty:=0;
//
Вывести школы,где max участников
for i:=1 to CurRec do
begin
if (arr[i][2]=max) then
Begin
writeln('№ школы:', arr[i][1]);
inc(SchoolQty);
End;
End;
writeln('Кол-во школ с
максимальным количеством учатсников:',
SchoolQty);
END.
|