• Pascal!!!!!
    Исправьте ошибки в задаче


    Program Partiii;
    Var n, NumParties, i, j, t: integer;
    Count:array[1..10] of integer;
    s: string[50];
    Names: array[1..10] of string;
    Begin
    NumParties:=0;
    ReadLn(N);
    for i:=1 to NumParties do
    begin
    max:=count[i];
    n:=i;
    for l:=1 to NumParties do
    begin
    if count[l]>max then
    begin
    max:=count[l];
    n:=l;
    end;
    end;
    if names[n]<>'' then begin
    writeln (names[n]);
    count[n]:=-1;
    names[n]:='';
    end;
    end;
    for i:=2 to NumParties do
    if Count[i-1]>n then
    begin
    n:=Count[i];
    t:=i;
    end;
    WriteLn(Names[t])
    end.

    Вот какое было задание,
    Доработайте программу так, чтобы она решала следующую задачу:
    1) Программа должна вывести список всех партий, встречающихся в исходном списке, в порядке убывания количества голосов, отданных за эту партию. При этом название каждой партии должно быть выведено ровно один раз, вне зависимости от того, сколько голосов было отдано за данную партию. Пример выходных данных для приведенного выше примера входных данных:
    Party three
    Party two
    Party one

    2) На вход программы подается список, при этом некоторые голоса являются недействительными, в этом случае вместо названия партии записан один символ «.» (точка). Партия проходит в парламент, если за нее отдано не менее 7% от общего числа действительных голосов (то есть от количества строк в списке, которые не равны «.»). Программа должна вывести список всех партий, прошедших в парламент, в произвольном порядке. При этом название каждой партии должно быть выведено ровно один раз, вне зависимости от того, сколько голосов было отдано за данную партию.

Ответы 1

  • 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.
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years