1)Program Partiii;Var n, NumParties, i, j, max: integer; Count: array[1..10] of integer; Names: array[1..10] of string;Begin writeln('количество партий: '); read (NumParties); for i:=1 to NumParties do begin if names[n]<>'' then begin max:=count[i]; n := i; for j:=2 to NumParties do begin if count[j]>max then begin max := count[j]; n:=j; end; end; writeln (names[n]); count[n] := -1; names[n] := ''; end; end;end;end.2) Алгоритм: вводятся данные в массив InList.массив просматривается, при совпадении партии увеличивается счетчик.Названия партий добавляются в список по мере встречаемости во входном массиве.названия с точкой тоже подсчитываются. Дальше считается число действительных голосов, лпределяется процент. Если больше 7 - выводится. Процент недействительных голосов тоже выводится на общих основаниях.Program Partiii;const m=2000;Var n, NumParties, i, j: integer; InList: array[1..m] of integer; //входной список s: string; n: real; t: boolean; Names: array[1..10] of string; //список партий Count: array[1..10] of integer; //количество голосовBegin NumParties := 1; Names[1] := InList[1]; Count[1] := 1; for i := 2 to M do begin s := InList[i]; t := false; for j:=1 to NumParties do begin if s=Names[j] then begin t := true; Count[j] := Count[j] + 1; end; end; if (t = false) then //партия встретилась первый раз. добавляем в список begin NumParties := NumParties +1; Count[NumParties] := 1; Names[NumParties] := InList[i]; end; end; for j:=1 to NumParties do if Names[j] <> '.' then n := n + Count[j]; //общее количество голосов без '.' for j:=1 to NumParties do begin if Names[j] <> '.' then begin n1 := Count[j]/n; //% по партии if n1 >= 7 then writeln (Names[j]); end else begin n1 := Count[j]/n; writeln ('недействительных голосов: ', n1, ' %'); end; end;end;end.