Помогите пожалуйста!! Нужно написать программу в Паскале. ** выборах в Государственную...

0 голосов
61 просмотров

Помогите пожалуйста!! Нужно написать программу в Паскале. На выборах в Государственную думу в избирательные бюллетени внесено N партий. Электронный сканер для считывания информации с бюллетеней передаёт информацию о каждом бюллетене в следующем формате: если в соответствующей клетке бюллетеня стоит пометка, то сканер передаёт + (плюс), в противном случае он передаёт − (минус). Таким образом, он передаёт последовательность из N символов — плюсов и минусов. Бюллетень считается действительным, если пометка есть ровно в одной клетке. Недействительные бюллетени в подсчёте результатов выборов не участвуют. Партия проходит в Государственную Думу, только если она набирает не менее 7% от общего числа действительных бюллетеней. Требуется вывести номера (в порядке их перечисления в бюллетене) всех партий, которые проходят в Государственную Думу.


Информатика (117 баллов) | 61 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

PascalABC.NET 3.4.2, сборка 1881 от 19.11.2018

Внимание! Если программа не работает, обновите версию!

begin

 var n := ReadlnInteger('N=');

 var R := new integer[n];

 repeat

   var a := ReadlnString.ToCharArray;

   if a.Length <> N then break;

   if a.Where(c -> c = '+').Count = 1 then

     Inc(R[a.IndexOf('+')])

 until False;

 R.Transform(t -> t >= 0.07 * N ? 1 : 0);

 R.Numerate.Where(t -> t[1] = 1).Select(t -> t[0]).Println

end.

Пример

(окончание ввода - строка длины отличной от N)

N= 5

-+---

--+--

-+---

+----

-+---

--+--

-+---

+----

----+

-+---


1 2 3 5

(654k баллов)