
Срочно!!! Pascal ABC Задача 1. В командных олимпиадах по программированию для решения
предлагается не более 12 задач. Команда может решать предложенные задачи в любом порядке. Подготовленные решения команда посылает в единую проверяющую систему соревнований. Написать программу, которая будет статистически обрабатывать пришедшие запросы на проверку, чтобы определить популярность той или иной задачи. На вход программе в первой строчке подается количество пришедших запросов N. В каждой из последующих N строк записан номер задачи от 1 до 12. Пример входных данных: 6 1 2 1 1 5 2 Программа должна вывести список всех задач, встречающихся в запросах, в порядке возрастания (неубывания) количества запросов по ней с указанием этого количества запросов. Каждая задача должна быть выведена только один раз. Пример выходных данных для приведенных входных данных: 5 1 (пятая задача встречается один раз) 2 2 (вторая задача встречается два раза) 1 3 (первая задача встречается три раза) Примечания: • В примере входных данных кроме задач №1, 2, 5 других номеров не было, т.е. их количество равно 0, но в выходных данных оно не выводится. • Нужно вспомнить способы сортировки массива и применть один из них. Для решения следующей задачи нужно работать с вложенными циклами Например, For i:=1 to n do For j:=1 to n do обрабатываем пары элементов a[i] и a[j]; НО! Нужно помнить, что если цикл записан в таком виде, как выше, то • при i=1 и j=1 будет рассматриваться не пара элементов, а один и тот же первый элемент. • или, например, когда i=3, a j=4, то рассматривается пара, состоящая из третьего и четвертого элемента, но когда i=4, a j=3, то рассматривается та же самая пара из третьего и четвертого элементов. И если она подходит по условию, то будет посчитана два раза. Поэтому циклы используем вложенные, но не в том виде, в котором они записаны выше, а смотрим по задаче, какими должны быть начальные и конечные значения для параметров i и j.

Ответы на вопрос

Ответ:
var
n, Num, i, j, t: integer;
Count: array[1..12] of integer;
Names: array[1..12] of integer;
begin
for i := 1 to 12 do
begin
Count[i] := 0;
Names[i] := i;
end;
ReadLn(N); { Считываем количество запросов}
for i := 1 to N do
begin
ReadLn(t); {считали очередной запрос}
Count[t] := Count[t] + 1;
end;
{Сортируем массивы Names и Count в порядке убывания значений массива Count}
for i := 12 downto 2 do
for j := 2 to i do
if Count[j - 1] < Count[j] then
begin
t := Count[j];
Count[j] := Count[j - 1];
Count[j - 1] := t;
t := Names[j];
Names[j] := Names[j - 1];
Names[j - 1] := t;
end;
for i := 12 downto 1 do
if Count[i] > 0 then
WriteLn(Names[i], ' ', Count[i]);
end.
Объяснение:



Для решения данной задачи мы можем использовать массив, в котором будем хранить количество запросов для каждой задачи. Затем мы пройдемся по входным данным и увеличим соответствующий элемент массива для каждой задачи.
После этого мы можем отсортировать массив в порядке возрастания количества запросов. Для этого можно использовать, например, метод сортировки пузырьком.
После сортировки мы можем вывести список задач и количество запросов для каждой задачи.
Вот пример кода на языке Pascal ABC, решающего данную задачу:
```pascal const N = 12; // количество задач
var requests: array[1..N] of Integer; // массив для хранения количества запросов i, j, temp, num, count: Integer;
begin // инициализация массива нулями for i := 1 to N do requests[i] := 0;
// чтение количества запросов ReadLn(count);
// обработка запросов for i := 1 to count do begin ReadLn(num); // чтение номера задачи requests[num] := requests[num] + 1; // увеличение количества запросов для данной задачи end;
// сортировка массива методом пузырька for i := 1 to N - 1 do for j := 1 to N - i do if requests[j] > requests[j + 1] then begin temp := requests[j]; requests[j] := requests[j + 1]; requests[j + 1] := temp; end;
// вывод списка задач и количества запросов for i := 1 to N do if requests[i] > 0 then WriteLn(i, ' ', requests[i]); end. ```
Надеюсь, это поможет вам решить задачу.


Похожие вопросы
Топ вопросов за вчера в категории Информатика








Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili