Считывание массива и ошибка System.ArgumentException

244
28 декабря 2017, 21:52

Есть олимпиадная задача:

На выборах в Государственную думу в избирательные бюллетени внесено N партий. Электронный сканер для считывания информации с бюллетеней передает информацию о каждом бюллетене в следующем формате: если в соответствующей клетке бюллетеня стоит пометка, то сканер передает + (плюс), в противном случае он передает - (минус). Таким образом, он передает последовательность из N символов - плюсов и минусов.

Бюллетень считается действительным, если пометка есть ровно в одной клетке. Недействительные бюллетени в подсчете результатов выборов не участвуют.

Партия проходит в Государственную Думу, только если она набирает не менее 7% от общего числа действительных бюллетеней.

Требуется вывести номера (в порядке их перечисления в бюллетене) всех партий, которые проходят в Государственную Думу.

Входные данные В первой строке входных данных содержатся два числа, разделенные пробелом: N - количество партий и M - количество бюллетеней. Оба числа натуральные, N <= 200, M <= 100 000.

В следующих M строках записана информация, полученная из бюллетеней. Каждая строка - последовательность из N символов + или - (без пробелов).

Гарантируется, что есть хотя бы один действительный бюллетень.

Выходные данные Выведите через пробел номера партий, прошедших в Думу, в порядке возрастания. Если ни одна из партий не проходит в Думу, выводить ничего не нужно.

Весь мой код:

        static void Main(string[] args)
    {
        string[] temp = Console.ReadLine().Split(' ');
        string[] votes;
        int count = 0;
        int consignments = int.Parse(temp[0]);
        int bulletins = int.Parse(temp[1]);
        int sum1;
        int sum2;
        int sum3;
        temp = null;
        for (int c = 0; c < consignments; c++)
        {
            votes = Console.ReadLine().Split();
            foreach (Match m in Regex.Matches(votes, "+")) count++;
            if (count != 1)
            {
                bulletins--;
                count = 0;
                break;
            }
            else
            {
                Console.WriteLine("{0} {1} {2}", votes, consignments, bulletins);
            }
        }
    }

Есть переменная votes, в неё должен считываться массив строк (+--, или -+-, или -+---), но он не считывается, а в гугле нормальной инфы не нашёл...

string[] votes;
votes = Console.ReadLine();

Ещё, после кода:

foreach (Match m in Regex.Matches(votes.ToString(), "+")) count++;

Вылезает:

В чём ошибка?

Answer 1

Решил все проблемы массивом char

char[] votes;
votes = Console.ReadLine().ToCharArray();
count = votes.Where(i => i == '+').Count();
READ ALSO
Создание структуры из массива байт

Создание структуры из массива байт

В исходном коде, который зашит в устройство есть такая структура:

230
Странный баг с мусорными строками в Unity

Странный баг с мусорными строками в Unity

Появился ооочень странный наполовину плавающий баг с мусорными строками

248
Передача функции из одной формы в другую (C#)

Передача функции из одной формы в другую (C#)

Столкнулся с данной проблемой при передачи функции из одной формы в другуюКак её решить?

205
Fluent-Ribbon: Отсутствуют картинки на контроллах в режиме конструктора

Fluent-Ribbon: Отсутствуют картинки на контроллах в режиме конструктора

Перешел на новый риббонПрикрепляю картинки на элементы интерфейса, но они отображаются только в запущенном приложении

190