Форум программистов, компьютерный форум CyberForum.ru

Выборы - C++

Восстановить пароль Регистрация
 
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
16.03.2011, 23:20     Выборы #1
На выборах в Государственную думу в избирательные бюллетени внесено N партий. Электронный сканер для считывания информации с бюллетеней передает информацию о каждом бюллетене в следующем формате: если в соответствующей клетке бюллетеня стоит пометка, то сканер передает + (плюс), в противном случае он передает - (минус). Таким образом, он передает последовательность из N символов - плюсов и минусов.

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

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

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

Формат входных данных

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

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

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

Формат выходных данных

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

Я написал её так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <cstring>
#include <sstream>
using namespace std;
int main()
{
int N,M,result[200];
char party[200];
cin>>N>>M;
for(int i=0;i<M;i++)
{
cin.getline(party, N-1);
if(party[i]=='+')
{
result[i]++;
}
}
for(int i=0;i<N;i++)
{
    if(100*result[i]>=7*M)
    {
    cout<<i+1<<" ";
    }
}
}
сама программа ничего не может сделать. В чём ошибка?

Добавлено через 2 минуты
Цитата Сообщение от Hi4ko Посмотреть сообщение
C++
1
cin.getline(party, N-1); if(party[i]=='+') { result[i]++; }
знаю, что ошибка, возможно, в этих строках, но не могу её грамотно исправить(
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
16.03.2011, 23:53     Выборы #2
Вот написал 25 строк, и уже в Думе - программистом.
Пусть даже зарплаты не дадут (еще не заслужил), но депутатский буфет-то он тут - рядом.
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
17.03.2011, 00:00  [ТС]     Выборы #3
Цитата Сообщение от IrineK Посмотреть сообщение
Вот написал 25 строк, и уже в Думе - программистом.
Пусть даже зарплаты не дадут (еще не заслужил), но депутатский буфет-то он тут - рядом.
было бы смешно, если бы не был мой скилл в C++ плачевен(
LaГushan
123 / 123 / 14
Регистрация: 12.03.2011
Сообщений: 227
17.03.2011, 01:09     Выборы #4
Hi4ko, ну да, вы в принципе правы, когда указывали строки с возможными ошибками
C++
1
cin.getline(party, N-1);
Вот тут, если N = 5, то в party будет только 3 символа, поэтому лучше не вычитать 1, а прибавлять.

C++
1
if(party[i]=='+')
вот тут, вы проверяете только один символ в строке, а не всю строку.
Хотя лучше напишите какой должен быть вход в программу, и что она должна выдавать, а то не очень понятно
fruktik
 Аватар для fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
17.03.2011, 01:13     Выборы #5
не по теме, но...
выборы...название меня в ступор поставило)))хаха

форум настроение на ночь поднимает
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
17.03.2011, 15:22  [ТС]     Выборы #6
Цитата Сообщение от LaГushan Посмотреть сообщение
Hi4ko, ну да, вы в принципе правы, когда указывали строки с возможными ошибками
C++
1
cin.getline(party, N-1);
Вот тут, если N = 5, то в party будет только 3 символа, поэтому лучше не вычитать 1, а прибавлять.

C++
1
if(party[i]=='+')
вот тут, вы проверяете только один символ в строке, а не всю строку.
Хотя лучше напишите какой должен быть вход в программу, и что она должна выдавать, а то не очень понятно
http://informatics.mccme.ru/moodle/m...hapterid=483#1
там есть примеры)
Yandex
Объявления
17.03.2011, 15:22     Выборы
Ответ Создать тему
Опции темы

Текущее время: 15:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru