Четверг, 21.11.2024, 14:33
Сайт учителей информатики
ГБОУ СОШ № 11 г. Москвы
Приветствую Вас Гость | RSS
Главная Среднее арифметическое элементов массива (усложненная) Регистрация Вход
Кабинет информатики

К уроку информатики

Планирование

Олимпиады и конкурсы

ЕГЭ и ГИА по информатике

Открытые мероприятия по информатике

Форма входа

Среднее арифметическое элементов массива (усложненная)

Вывести числа, большие среднего арифметического значений, записанных в файле,
имеющего структуру: сначала идет число в диапазоне от 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.


ГБОУ СОШ № 11

Учителя информатики

Цитатник

Обратная связь

Поиск

Календарь
«  Ноябрь 2024  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
252627282930

Архив записей

Informatika11 © 2024 Бесплатный хостинг uCoz