Ответ 2 , так как курс по физике выбрали 30 человек, а поэтому велика вероятность, что все ученики 10г класса могут его выбрать.
Кажется, что в первом варианте будет 525, во втором 1.
Флэш-накопитель, CD/DVD диск, внешний жесткий диск, дискета.
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.