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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Мотороллер
428 / 240 / 37
Регистрация: 05.08.2013
Сообщений: 1,629
Завершенные тесты: 1
01.05.2014, 10:42     Проверка на зеркальное отражение строки #1
Для общения в полевых условиях используется система обмена сообщениями 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 тестов. тестирующая система не дает тесты где крашится. вроде все верно,может кто-то увидит баги
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CssHammer
6 / 6 / 1
Регистрация: 31.08.2013
Сообщений: 65
02.05.2014, 20:40     Проверка на зеркальное отражение строки #21
Пользователь вводит текст, если он соответствует формату "словооволс" (тоесть слово+перевернутое слово), то выводится значение NO, если же текст не соответствует формату, то выводится YES
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
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
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.05.2014, 21:27     Проверка на зеркальное отражение строки #23
MrGluck, в C++11 сложность для вычисления длины константна. К тому же и строка в данном случае тоже.
А вот почему длина не может быть нулевой это еще вопрос.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
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++ Дана строка s, содержащая n символов s1, s2, . , sn,. Зеркальное отражение строки
C++ Строка символов s1, s2, . , sn. Зеркальное отражение строки без последнего символа

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

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

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