Выведите фамилию, имя и отчество троих кандидатов, получивших наибольшее число голосов на выборах - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Проводились выборы президента школы. В первой строке подаётся целое число N-количество проголосовавших. Каждая из последующих N строк содержит фамилию фамилию, имя и отчество кандидата, за которого проголосовал тот или иной избиратель. Известно, что в выборах принимало участие не более 10 и не менее 3 кандидатов. Выведите фамилию, имя и отчество троих кандидатов, получивших наибольшее число голосов на выборах. Выводить следует в порядке от высшего к низшему. Напишите эффективную, в том числе и по используемой памяти, программу на языке Pascal.

Решение задачи: «Выведите фамилию, имя и отчество троих кандидатов, получивших наибольшее число голосов на выборах»

textual
Листинг программы
var
    n, i, j, p, k :longint;
    s :string;
    a :array[1 .. 10] of string;
    d :array[1 .. 10] of longint;
begin
    readln(n);
 
    for i := 1 to n do begin
        readln(s);
        p := 0;
        for j := 1 to k do
            if (a[j] = s) then p := j;
 
        if (p = 0) then begin
            inc(k);
            a[k] := s;
        end
        else
            d[p] := d[p] + 1;
    end;
 
    for i := 1 to k do
        for j := 1 to k - 1 do
            if (d[j] < d[j + 1]) then begin
                s := a[j];
                a[j] := a[j + 1];
                a[j + 1] := s;
                p := d[j];
                d[j] := d[j + 1];
                d[j + 1] := p;
            end;
 
    for i := 1 to 3 do
        writeln(a[i]);
end.

Объяснение кода листинга программы

Данный код написан на языке Turbo Pascal и выполняет следующие действия:

  1. Объявляет переменные: n, i, j, p, k, s, a и d.
    • n - переменная для хранения числа кандидатов (в данном случае 3).
    • i, j, p, k - переменные для цикла.
    • s - переменная для хранения имени кандидата.
    • a и d - двумерные массивы для хранения фамилий и числа голосов соответственно.
  2. Считывает имя кандидата и его число голосов.
    • В цикле for i := 1 до n do считывается имя кандидата и его число голосов.
    • Переменная p инициализируется значением 0.
    • В цикле for j := 1 до k do происходит сравнение имени кандидата с именами в массиве a.
    • Если имя кандидата совпадает с именем в массиве a, то значение переменной p увеличивается на 1.
    • Если значение переменной p равно 0, то имя кандидата записывается в массив d.
    • Если значение переменной p больше 0, то число голосов кандидата увеличивается на 1 и записывается в массив d.
  3. Выводит имена трех кандидатов с наибольшим числом голосов.
    • В цикле for i := 1 до 3 do выводится имя кандидата из массива d. Таким образом, данный код позволяет вывести фамилию, имя и отчество троих кандидатов, получивших наибольшее число голосов на выборах.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы