1 / 1 / 0
Регистрация: 29.10.2016
Сообщений: 236
1

Функция определяющая является ли палиндромом заданная строка

18.01.2017, 08:05. Показов 4868. Ответов 18
Метки нет (Все метки)

4. Палиндром — это строка, которая читается одинаково в обоих направлениях. Например, "tot" и "otto" — короткие палиндромы. Напишите программу, которая запрашивает у пользователя строку и передает ссылку на нее функции Check типа bool. Функция должна возвращать true, если строка является палиндромом, и false — в противном случае.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.01.2017, 08:05
Ответы с готовыми решениями:

Функция, определяющая, является ли число палиндромом
Помогите написать программу с комментариями (Функции) Написать функцию, которая... определяет,...

Определить, является ли заданная строка палиндромом
1. Определить, является ли заданная строка палиндромом (пример палиндрома:'А РОЗА УПАЛА НА ЛАПУ...

Дана строка символов. Является ли заданная она палиндромом
Пожалуйста,Помогите разобраться с ректорской к.р.! Вот есть задание: Дана строка символов....

Разработать рекурсивную функцию, определяющую, является ли заданная строка палиндромом
Разработать рекурсивную функцию, возвращающую значение: Определяющую, является ли заданная строка...

18
Модератор
Эксперт С++
12630 / 10128 / 6097
Регистрация: 18.12.2011
Сообщений: 27,159
18.01.2017, 08:22 2
см. ссылки внизу страницы
0
23 / 24 / 20
Регистрация: 03.07.2015
Сообщений: 66
18.01.2017, 08:38 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
 
bool Check(std::string s)
{
    bool flag = true;
    for (int i = 0, j = s.size()-1; i < s.size(); i++, j--)
    {
        if (s[i] != s[j])
            flag = false;
    }
    return flag;
}
 
int main()
{
    std::string str;
    std::cin >> str;
    std::cout << std::boolalpha << Check(str) << std::endl;
    
    return 0;
}
1
Заблокирован
20.02.2017, 07:47 4
C++
1
2
3
4
5
6
7
8
9
10
11
bool check(string s)
{
    for(int i=0,j=s.length()-1; i<j; i++,j--)
        if(s[i]!=s[j]) return false;
    return true;
}
void main(int argc,char **argv)
{
    string s;
    cout<<"string:";
    cin>>s;
0
Любитель чаепитий
3734 / 1793 / 563
Регистрация: 24.08.2014
Сообщений: 5,998
Записей в блоге: 1
20.02.2017, 07:57 5
C++
1
2
3
4
bool check(const std::string & str)
{ 
  return str == std::string(str.rbegin(), str.rend());
}
Цитата Сообщение от MansMI Посмотреть сообщение
bool check(string s)
А у вас строка будет копироваться, а не по ссылке передаваться.
0
Заблокирован
20.02.2017, 07:59 6
и кому это мешает?
0
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
20.02.2017, 14:16 7
Цитата Сообщение от GbaLog- Посмотреть сообщение
А у вас строка будет копироваться, а не по ссылке передаваться.
Так у Вас тоже
0
Форумчанин
Эксперт CЭксперт С++
8193 / 5043 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.02.2017, 14:20 8
Цитата Сообщение от New man Посмотреть сообщение
Так у Вас тоже
Между копированием и созданием другого объекта есть разница.
0
Croessmah
20.02.2017, 14:20
  #9

Не по теме:

Цитата Сообщение от GbaLog- Посмотреть сообщение
А у вас строка будет копироваться
А может перемещаться? :)

0
Форумчанин
Эксперт CЭксперт С++
8193 / 5043 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.02.2017, 14:21 10
Цитата Сообщение от Croessmah Посмотреть сообщение
А может перемещаться?
А может и нет)
0
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
20.02.2017, 14:23 11
C++
1
2
3
4
bool check(const std::string& str)
{
    return std::equal(str.begin(), str.begin() + str.length() / 2, str.rbegin());
}
0
Форумчанин
Эксперт CЭксперт С++
8193 / 5043 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.02.2017, 14:24 12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <algorithm>
#include <iostream>
#include <string>
 
bool IsPalindrom(const std::string &str)
{
    return std::equal(str.cbegin(), str.cbegin() + str.length() / 2, str.crbegin());
}
 
int main()
{
    std::cout << std::boolalpha << IsPalindrom("ololo") << std::endl << IsPalindrom("oolo");
}
0
Любитель чаепитий
3734 / 1793 / 563
Регистрация: 24.08.2014
Сообщений: 5,998
Записей в блоге: 1
20.02.2017, 14:28 13
Цитата Сообщение от Croessmah Посмотреть сообщение

Не по теме:


А может перемещаться? :)

Ну, перемещений тут никаких не видать. Только если оптимизация компилятора.
А вообще, в "ТЗ" сказано, что строка должна по ссылке передаваться, так что копирование/перемещение тут даже не при чем.

Добавлено через 1 минуту
Цитата Сообщение от New man Посмотреть сообщение
Так у Вас тоже
А вы уверены? Прям на все 100%?
0
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
20.02.2017, 14:30 14
Цитата Сообщение от MrGluck Посмотреть сообщение
Между копированием и созданием другого объекта есть разница.
Ну, это почти одно и то же

Вообще, хватить флудить, вот вам вариант с константной памятью:

C++
1
2
3
4
bool check(const std::string& str)
{
    return std::equal(str.begin(),str.end(), str.rbegin());
}

Раньше меня успели :_(
0
Форумчанин
Эксперт CЭксперт С++
8193 / 5043 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.02.2017, 14:31 15
Цитата Сообщение от GbaLog- Посмотреть сообщение
Ну, перемещений тут никаких не видать.
Явных не видать.
Цитата Сообщение от GbaLog- Посмотреть сообщение
по ссылке передаваться, так что копирование/перемещение тут даже не при чем.
Казалось бы, как ссылки связаны с перемещением..
0
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
20.02.2017, 14:43 16
Цитата Сообщение от New man Посмотреть сообщение
C++
1
bool check(const std::string& str) { return std::equal(str.begin(),str.end(), str.rbegin()); }
Вы тут, давеча, утверждали, что не обязательно помнить особенности реализации unordered_set, а главное алгоритмы.
Необязательность запоминания чего помогла вам в этот раз написать алгоритм в 2 раза медленнее по скорости, чем в предыдущих постах?
0
Любитель чаепитий
3734 / 1793 / 563
Регистрация: 24.08.2014
Сообщений: 5,998
Записей в блоге: 1
20.02.2017, 16:44 17
Цитата Сообщение от MrGluck Посмотреть сообщение
Казалось бы, как ссылки связаны с перемещением..
Ну, я думаю, что там имелась ввиду обычная/константная lvalue-ссылка, хотя вы правы, не стоит додумывать.
0
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
21.02.2017, 07:45 18
Цитата Сообщение от avgoor Посмотреть сообщение
Вы тут, давеча, утверждали, что не обязательно помнить особенности реализации unordered_set, а главное алгоритмы.
Необязательность запоминания чего помогла вам в этот раз написать алгоритм в 2 раза медленнее по скорости, чем в предыдущих постах?
Асимптотически всё, что тут отвечали, одинаково по времени.

А наши с Вами ответы одинаковы как по асимптотической оценке времени (O(n)), так и по дополнительной памяти (O(1)).

Однако стоит признать, что в своём коде я бы написал точно так же, как и Вы.
0
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
21.02.2017, 14:40 19
Цитата Сообщение от New man Посмотреть сообщение
как по асимптотической оценке времени (O(n))
Асимптотическая оценка используется для сравнения разных алгоритмов при стремлении количества данных к бесконечности. Утверждать, что два алгоритма равнозначны, на основании того, что они принадлежат к одному классу сложности - даже не знаю, как бы помягче это назвать. Повашему вообще выходит, что все реализации любого алгоритма - одинаковы. Кроме того есть алгоритмы с меньшей асимптотической оценкой, но не используемые в пользу более "медленных", из-за того, что они начинают показывать профит на количестве данных, которые в память суперкомпьютера не поместятся. Но зато теоретическая асимптотическая сложность же!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2017, 14:40
Помогаю со студенческими работами здесь

Разработать рекурсивную функцию, определяющую является ли заданная строка палиндромом
разработать рекурсивную функцию, определяющую является ли заданная строка палиндромом

Проверить является ли заданная строка палиндромом (найти и исправить ошибки в коде)
Вот такое вот задание //Дана строка символов.Необходимо проверить является ли эта строка...

Функция, определяющая, является ли число палиндромом
Написать функцию, возвращающую True, если целый параметр K (&gt; 0) является палиндромом (то есть его...

Является ли заданная строка палиндромом
Является ли заданная строка палиндромом. Палиндромом называется строка, которая читается одинаково...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru