Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему ответ неверный?? Решаю задачу, а она не решается) 
V
    Опции темы
lllJollyRogerlll
Дата 29.1.2015, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 20.11.2014

Репутация: нет
Всего: нет



Опять я со своим криво написанным, запутанным кодом, но что уж поделаешь, я пока еще учусь. 
Итак, решаю задачу:
Цитата

1003. Чётность
Ограничение времени: 2.0 секунды
Ограничение памяти: 64 МБ
Вы играете со своим другом в следующую игру. Ваш друг записывает последовательность, состоящую из нулей и единиц. Вы выбираете непрерывную подпоследовательность (например, подпоследовательность от третьей до пятой цифры включительно) и спрашиваете его, чётное или нечётное количество единиц содержит эта подпоследовательность. Ваш друг отвечает, после чего вы можете спросить про другую подпоследовательность, и так далее.
Ваша задача — угадать всю последовательность чисел. Но вы подозреваете, что некоторые из ответов вашего друга могут быть неверными, и хотите уличить его в обмане. Вы решили написать программу, которая получит наборы ваших вопросов вместе с ответами друга и найдет первый ответ, который гарантированно неверен. Это должен быть такой ответ, что существует последовательность, удовлетворяющая ответам на предыдущие вопросы, но никакая последовательность не удовлетворяет этому ответу.
Исходные данные
Ввод содержит несколько тестов. Первая строка каждого теста содержит одно число, равное длине последовательности нулей и единиц. Эта длина не превосходит 109. Во второй строке находится одно неотрицательное целое число — количество заданных вопросов и ответов на них. Количество вопросов и ответов не превышает 5 000. Остальные строки содержат вопросы и ответы. Каждая строка содержит один вопрос и ответ на этот вопрос: два целых числа (позиции первой и последней цифр выбранной подпоследовательности) и одно слово — “even” или “odd” — ответ, сообщающий чётность количества единиц в выбранной подпоследовательности, где “even” означает чётное количество единиц, а “odd” означает нечётное количество. Ввод заканчивается строкой, содержащей −1.
Результат
Каждая строка вывода должна содержать одно целое число X. Число X показывает, что существует последовательность нулей и единиц, удовлетворяющая первым X условиям чётности, но не существует последовательности, удовлетворяющей X + 1 условию. Если существует последовательность нулей и единиц, удовлетворяющая всем заданным условиям, то число X должно быть равно количеству всех заданных вопросов.

Помогите пожалуйста разобраться. Спасибо большое!
Написал вот этот код:
Код

#include<iostream>
#include<string>
#include<ctime>

int main()
{
    unsigned int count;                        // величина последовательности нулей и единиц
    unsigned short questions;                // количество заданных вопросов и ответов на них
    short first_value;                        // первое число в диапазоне запроса
    short last_value;                        // последнее число в диапазоне запроса
    unsigned short if_even;                    // переменная для определения четности единиц
    unsigned short X = 0;                    // последовательность нулей и единиц, удовлетворяющая первым X условиям чётности
    std::string even_or_odd;                // вводимый пользователем ответ "even", или "true"
    bool users_if_even;                        // если пользователь вводит "even", то значение true, если "odd" - false
    bool last_user_answer = 1;                // если прошлый ответ пользователя верный - true, если нет - false

    std::cout << "What is the sequence nulls and ones?: ";
    std::cin >> count;
    bool* pArray = new bool[count];

    srand(time(0));
    for (int i = 0; i < count; i++)
    {
        bool tmp = (rand()%2);
        pArray[i] = tmp;
    }

    std::cout << "How many questions and answers?: ";
    std::cin >> questions;

    for (int i = 0; i < questions; i++)
    {
        std::cout << "Enter the range and through the space enter the answer, \"even\", or \"odd\"?: ";
        std::cout.flush();
        std::cin >> first_value;
        if (first_value == -1) break;                // если ввод "-1", выходим
        std::cin >> last_value;
        std::cin >> even_or_odd;
        if (first_value > last_value) break;        // если первое значение порядка в списке больше, чем второго - выходим
        if_even = 0;
        if (even_or_odd == "even") users_if_even = true;
        else users_if_even = false;

        for (int i = first_value-1; i <= last_value-1; i++)
        {
            if (pArray[i] == true) if_even++;
            else continue;
        }
        
        if (users_if_even && last_user_answer)
        {
            if (!(if_even > 0 && if_even % 2))
            {
                X++;
                last_user_answer = true;
            }
            else last_user_answer = false;
        }
        else if ((!users_if_even) && last_user_answer)
        {
            if (if_even > 0 && if_even % 2)
            {
                X++;
                last_user_answer = true;
            }
            else last_user_answer = false;
        }
        else continue;
    }

    std::cout << "X = " << X << std::endl;
    delete[] pArray;
    
    return 0;
}

Скидываю на проверку - пишет что ответ неверный. Что не так? Может я неверно понял условие?

Это сообщение отредактировал(а) lllJollyRogerlll - 30.1.2015, 10:42
PM MAIL   Вверх
borisbn
Дата 30.1.2015, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



lllJollyRogerlll, мало кому захочется лезть на какой-то малоизвестный сайт, чтобы прочитать условие. Лучше скопировать условие прямо сюда. Я думаю, ничего страшного, что вопрос будет занимать много места.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
lllJollyRogerlll
Дата 30.1.2015, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 20.11.2014

Репутация: нет
Всего: нет



Цитата(borisbn @ 30.1.2015,  09:39)
lllJollyRogerlll, мало кому захочется лезть на какой-то малоизвестный сайт, чтобы прочитать условие. Лучше скопировать условие прямо сюда. Я думаю, ничего страшного, что вопрос будет занимать много места.

Скопировал. smile 
PM MAIL   Вверх
xvr
Дата 30.1.2015, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Исходные данные для вашей задаче находятся в файле. Результат так же выводится в файл. Сравнивать его будет робот, и ваши веселые сообщения от программы типа How many questions and answers?: и все остальные явно не совпадут с ожиданиями робота  smile 

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

Цитата(lllJollyRogerlll @  29.1.2015,  18:40 Найти цитируемый пост)
Может я неверно понял условие?

Похоже

PM MAIL   Вверх
lllJollyRogerlll
Дата 30.1.2015, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 20.11.2014

Репутация: нет
Всего: нет



Цитата(xvr @ 30.1.2015,  15:48)
Исходные данные для вашей задаче находятся в файле. Результат так же выводится в файл. Сравнивать его будет робот, и ваши веселые сообщения от программы типа How many questions and answers?: и все остальные явно не совпадут с ожиданиями робота  smile 

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

Цитата(lllJollyRogerlll @  29.1.2015,  18:40 Найти цитируемый пост)
Может я неверно понял условие?

Похоже

Не понимаю, как мне вычислить содержимое массива, которого не существует..  smile 
Простите пожалуйста, за мою тупость... Мне открыть необходимо файл, в котором записан массив? Этот файл просто поместить в проект? Но на проверку отправляется только код... Не могу понять... smile 
Не могли бы вы разжевать мне условия этой задачи, тогда? 
PM MAIL   Вверх
feodorv
Дата 30.1.2015, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(lllJollyRogerlll @  30.1.2015,  17:31 Найти цитируемый пост)
Мне открыть необходимо файл, в котором записан массив?

Нет. Массив неизвестен.


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
xvr
Дата 2.2.2015, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(lllJollyRogerlll @  30.1.2015,  17:31 Найти цитируемый пост)
Не могли бы вы разжевать мне условия этой задачи, тогда?  

Условие задачи не в том, что бы написать программу по алгоритмну из условия, а в том, что бы придумать алгоритм и потом его изобразить в программе (что кстати считается вещью абсолютно тривиальной).

С вашим уровнем подготовки вещь практически нереальная. Поищите задачи попроще  smile 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0673 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.