zadach499.PAS

{* Задача 499 *}

Unit ZADACH499;
Interface
Implementation
Begin
 writeln(' Опросили 20 подписчиков. Каждый из них назвал 3 любимые газеты. Напечатать пронумерованный список первых 10 наиболее популярных газет, расположив названия газет в списке в порядке уменьшения числа, отданных за них голосов. Предусмотреть, что каждый из опрашиваемых должен назвать 3 разные газеты.');
End.

Program zadach499;

Uses zadach499.pas; {* Эту строку можно удалить *}
Uses crt; {* Подключаем внешние файлы *}
Var {* В работе нам потребуются переменные: *}
  i  : integer;
  j  : integer;
  k  : integer;
  t  : integer;
  m  : integer;
  l  : boolean;
  s  : String;
  g  : Array [1..20, 1..3] Of String;
  g1 : Array [1..60] Of String;
  x1 : Array [1..60] Of integer;
Begin
  clrscr; {* Стираем всё с экрана *}
  writeln ( 'VVedite rezultati oprosa');
  t := 1;
  For k := 1 To 20 Do {* Увеличиваем k от 1 до 20 с шагом 1 *}
  Begin
    writeln('Vvedite lubimie gazeti ' , k, '-ogo podpischika');
    readln(g[k, 1] );
    Repeat         l := false;
      readln(g[k, 2]);
    If (g[k, 2]) = (g[k, 1] ) Then
    Begin
      writeln ('Vvedite drugoe nazvanie gazeti');
      l := true;
    End;
    Until l = false;
    Repeat         l := false;
      readln(g[k, 3]);
    If (g[k, 3] = g[k, 2]) Or (g[k, 3] = g[k, 1]) Then
    Begin
      writeln ('Vvedite drugoe nazvanie gazeti');
      l := true;
    End;
    Until l = false;
    For i := 1 To 3 Do {* Переменная i увеличивается с 1 до 3 *}
    Begin
      If (i = 1) And (k = 1) Then
      Begin
        g1[1] := g[1, 1];
        x1[1] := 1;
      End;
      Else Begin
        For j := 1 To t Do {* Цикл для j => [1 .. t] *}
          If g [k, i] = g1[j] Then
          Begin
            x1[j] := x1[j] + 1;
            l := true;
          End;
      If l = false Then
      Begin
        g1[t + 1] := g[k, i];
        x1[t + 1] := 1;
        t := t + 1;
      End;
      
    End;
    
  End;
  
End;
For i := 1 To t Do {* Увеличиваем i от 1 до t с шагом 1 *}
Begin
  m := x1[i];
  k := i;
  For j := i + 1 To t Do
    If x1[j] > m Then
    Begin
      m := x1[j];
      k := j;
    End;
  If k i Then
  Begin
    m := x1[i];
    s := g1[i];
    x1[i] := x1[k];
    g1[i] := g1[k];
    x1[k] := m;
    g1[k] := s;
  End;
  
End;
writeln; {* Вывод пустой строки *}
writeln ('spisok 10 samih populyarnih gazet');
For i := 1 To 10 Do {* Переменная i увеличивается с 1 до 10 *}
  writeln (i, '.', g1[i], ' ', x1[i], 'golosov');
End..