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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Мотороллер
428 / 240 / 37
Регистрация: 05.08.2013
Сообщений: 1,647
Завершенные тесты: 1
#1

Проверка на зеркальное отражение строки - C++

01.05.2014, 10:42. Просмотров 1397. Ответов 24
Метки нет (Все метки)

Для общения в полевых условиях используется система обмена сообщениями WhoDown. Так
как вся связь в поле идет через радиоканал, а магнитная обстановка на поле нестабильна, то
приходится передавать сообщение так, чтобы при некоторых потерях информацию можно было
восстановить. Для того, чтобы привести сообщение в восстанавливаемый вид, его разворачивают и
приписывают к самому себе в конце, после чего передают. Так сообщение «hello» превратится в
«helloolleh». Вы отвечаете за написание программной части принимающего устройства, которая
определяет, было повреждено сообщение или нет.
Формат входных данных
На стандартный консольный вход Вашей программе подается одна строка — полученное
сообщение.
Формат выходных данных
Выведете «YES», если сообщение было повреждено во время передачи и «NO» - если не
было.
Примеры
Входные данные Ожидаемый результат работы
helloolleh NO
ghj YES
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
#include <iostream>
#include <cstring>
using namespace std;
 
int main()
{
    char str[1000];
    cin.getline(str, 1000);
    if (strlen(str) % 2 != 0)
    {
        cout<<"YES";
    }
    else 
    {
        int i, j;
        for (i=0, j=strlen(str)-1; str[i] == str[j] && i < j; i++, j--);
        
        if (i<j)
            cout<<"YES";
        else 
            cout<<"NO";
    }
    return 0;
}
прога проходит 10 тестов. тестирующая система не дает тесты где крашится. вроде все верно,может кто-то увидит баги
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2014, 10:42     Проверка на зеркальное отражение строки
Посмотрите здесь:
C++ Зеркальное отражение строки
C++ Дана строка s, содержащая n символов s1, s2, . , sn,. Зеркальное отражение строки
C++ Строка символов s1, s2, . , sn. Зеркальное отражение строки без последнего символа
Зеркальное Отражение И Сисстемы счисления C++
C++ Зеркальное отражение относительно побочной диагонали
Зеркальное отражение числа 0001->1000 C++
в двумерном массиве (NxN) произвести зеркальное отражение относительно вертикальной оси симметрии. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 797
Записей в блоге: 10
02.05.2014, 14:07     Проверка на зеркальное отражение строки #16
Задача A

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
26
27
28
#include <iostream>
 
int main()
{
    const int n = 1000010;
    char * t = new char[n];
    std::cin.getline(t,n);
    
    int j = 0;
    while(t[j] != '\0') j++;
 
    if(j%2 != 0) std::cout << "YES";
    else
    {
    
        bool q = true;
        int m = j/2;
        for(int i = 0;i < m;i++)
            if(t[i] != t[j - i - 1])
            {
             q = false;
             break;
            }
 
        std::cout << (q ? "NO": "YES");
    }
    return 0;
}
Что можно сделать лучше ?
Учавствовал олимпиаде от Типичного программиста

мне просто интересно
вот не проходит тесты :

Инфо
Итог
Посылки
Положение участников
Отправить вопрос
Сообщения


Неполное решение

Всего тестов: 22, пройдено: 14, не пройдено: 8.
Получено баллов: 60 (из 100).

N Результат Время (с) Баллы
1 OK 0.000 1 (1)
2 OK 0.000 1 (1)
3 OK 0.080 1 (1)
4 OK 0.084 1 (1)
5 OK 0.084 1 (1)
6 OK 0.012 1 (1)
7 OK 0.080 1 (1)
8 OK 0.008 1 (1)
9 OK 0.036 1 (1)
10 Неправильный ответ 0.080 0 (1)
11 OK 0.064 1 (1)
12 OK 0.064 1 (1)
13 OK 0.024 1 (1)
14 Неправильный ответ 0.084 0 (1)
15 Неправильный ответ 0.084 0 (1)
16 OK 0.000 1 (1)
17 Неправильный ответ 0.080 0 (1)
18 Неправильный ответ 0.076 0 (1)
19 Неправильный ответ 0.084 0 (1)
20 Неправильный ответ 0.084 0 (1)
21 Неправильный ответ 0.076 0 (1)
22 OK 0.000 1 (1)
Вложения
Тип файла: pdf tpolymp.pdf (124.3 Кб, 13 просмотров)
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 797
Записей в блоге: 10
02.05.2014, 14:31     Проверка на зеркальное отражение строки #17
все рубит
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 797
Записей в блоге: 10
02.05.2014, 15:27     Проверка на зеркальное отражение строки #18
IrineK, просто нужно было увеличить длину строки .. концерт вобщем
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,190
Завершенные тесты: 1
02.05.2014, 15:29     Проверка на зеркальное отражение строки #19
1) Двойные повреждения сообщения не всегда можно определить, так что условие задачи, по-моему, некорректно.
2) Не вижу в условии ограничения на длину строки - 1000010 точно хватит?

Добавлено через 1 минуту
А, всё уже. В любом случае ограничений на строку нигде не видно...
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 797
Записей в блоге: 10
02.05.2014, 15:30     Проверка на зеркальное отражение строки #20
Мотороллер, Олимпиадная задача на зеркальное отражение строки
вот все рубит

длина строки я сделал 10 млн .
с миллионо не проходило восемь тестов ,вобщем экстенсивный путь
CssHammer
6 / 6 / 1
Регистрация: 31.08.2013
Сообщений: 65
02.05.2014, 20:40     Проверка на зеркальное отражение строки #21
Пользователь вводит текст, если он соответствует формату "словооволс" (тоесть слово+перевернутое слово), то выводится значение NO, если же текст не соответствует формату, то выводится YES
MrGluck
Модератор
Эксперт CЭксперт С++
7163 / 4329 / 632
Регистрация: 29.11.2010
Сообщений: 11,751
02.05.2014, 21:11     Проверка на зеркальное отражение строки #22
Цитата Сообщение от Tulosba Посмотреть сообщение
for( size_t i=0; i<s.length()/2; ++i )
для олимпиадных задач вычислять длину строки при каждой итерации цикла не есть гуд

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
 
bool damaged(const std::string &s)
{
    // длина быть нулевой не может, так что всё ок
    for (std::string::size_type i=0, j=s.length()-1; i < j; ++i, --j)
        if (s[i] != s[j])
            return true;
    return false;
}
 
int main()
{
    std::string s;
    std::cin >> s;
    std::cout << (damaged(s) ? "YES" : "NO");
}
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.05.2014, 21:27     Проверка на зеркальное отражение строки #23
MrGluck, в C++11 сложность для вычисления длины константна. К тому же и строка в данном случае тоже.
А вот почему длина не может быть нулевой это еще вопрос.
MrGluck
Модератор
Эксперт CЭксперт С++
7163 / 4329 / 632
Регистрация: 29.11.2010
Сообщений: 11,751
02.05.2014, 21:54     Проверка на зеркальное отражение строки #24
Цитата Сообщение от Tulosba Посмотреть сообщение
в C++11 сложность для вычисления длины константна.
нет гарантий что на проверяющей машине будет компилятор с поддержкой С++11, а тем более флагом -std=c++11(0x).
Цитата Сообщение от Tulosba Посмотреть сообщение
А вот почему длина не может быть нулевой это еще вопрос.
std::cin же не даст ввести
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2014, 21:58     Проверка на зеркальное отражение строки
Еще ссылки по теме:
Зеркальное отображение слов C++
зеркальное отображение матрицы C++
C++ Зеркальное переворачивание массива
C++ Зеркальное отображение массива
Проверка строки C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.05.2014, 21:58     Проверка на зеркальное отражение строки #25
MrGluck, cin тут не причем, длина же в функции используется, а в функцию аргумент идет по константной ссылке.
Yandex
Объявления
02.05.2014, 21:58     Проверка на зеркальное отражение строки
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru