Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/55: Рейтинг темы: голосов - 55, средняя оценка - 4.78
 Аватар для ZarinZomanu4
10 / 10 / 0
Регистрация: 27.05.2013
Сообщений: 92

Функция определения палиндрома

11.07.2017, 02:33. Показов 11695. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите функцию, которая
называется IsPalindrom
возвращает bool
принимает параметр типа string и возвращает, является ли переданная строка палиндромом
Подскажите что не так с кодом?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
#include <vector>
using namespace std;
bool IsPalindrom (vector<string> x)
{   vector<string> y;
    for (auto a:x)
    {
         y.push_back(a);
    }
    if (x==y)
      return true;
    else
        return false;
    
    }
    int main() {
        string x;
        cin>> x;
    cout<<IsPalindrom (x);
    
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.07.2017, 02:33
Ответы с готовыми решениями:

Рекурсивная функция определения палиндрома строки.
Написал по заданию из книги Дейтелов. bool testPalindrome( const char arr, const size_t &amp;x, const size_t &amp;y = NULL ) { if ( x == y...

Написать блок схему определения строки-палиндрома
Помогите пожалуйста написать блок схему для этой программы. Я просто не знаю, как это для функций делать? #include &lt;stdlib.h&gt; ...

Процедура и функция: Функция определения максимальной цифры числа
напишите программу,которая с помощью функции определяющей максимальную цифру числа выводит на экран наибольшую из цифр заданных...

36
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
11.07.2017, 17:37
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от DevAlone Посмотреть сообщение
с чего это вдруг?
с того, что адрес хранит указатель, а как ссылка ссылается на переданный объект - дело ссылки, а не ваше.
это зависит от реализации компилятора, что там передается.
0
 Аватар для ZarinZomanu4
10 / 10 / 0
Регистрация: 27.05.2013
Сообщений: 92
11.07.2017, 17:49  [ТС]
Цитата Сообщение от DevAlone Посмотреть сообщение
Цитата Сообщение от ZarinZomanu4 Посмотреть сообщение
if(len>1)
абсолютно бесполезная операция.
По условию 1 символ тоже считается палиндромом
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
11.07.2017, 17:56
Цитата Сообщение от ZarinZomanu4 Посмотреть сообщение
Задумка правильная или хромает так же как и реализация?
Вообще не ходит. Функция должна бы возвращать вектор строк, а пытается вернуть первую подходящую строку.
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
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
 
// ну или любая из предложенных реализаций
bool is_palindrome(const std::string & s) {
    return ( s.length() < 2 ) || ( s[0] == s[s.length() - 1] ) && is_palindrome(s.substr(1, s.length() - 2));
}
 
std::vector<std::string> copy_filter(const std::vector<std::string> & vec, int minLength) {
    std::vector<std::string> ret;
    
    std::copy_if(vec.cbegin(), vec.cend(), std::back_inserter(ret), [=](const std::string & s){ return ( s.length() >= minLength ) && is_palindrome(s); });
    
    return ret;
}
 
int main() {
    std::vector<std::string> v = { "abccba", "xxx", "qwerty1234", "eeeee" };
    
    for ( const auto & s : copy_filter(v, 5) )
        std::cout << s << std::endl;
    
    return 0;
}
Code
1
2
3
4
> g++ -std=c++11 vector_filter.cpp 
> ./a.out 
abccba
eeeee
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
11.07.2017, 18:02
Цитата Сообщение от GbaLog- Посмотреть сообщение
с того, что адрес хранит указатель, а как ссылка ссылается на переданный объект - дело ссылки, а не ваше.
это зависит от реализации компилятора, что там передается.
И тем не менее в приведённом случае все компиляторы передают адрес, да и вообще в большинстве случаев ссылка под капотом тот же указатель, а если компилировать с оптимизациями, то компилятор может и указатель в некоторых ситуациях убирать, как ненужный элемент.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
11.07.2017, 18:04
Цитата Сообщение от easybudda Посмотреть сообщение
[=](const std::string & s)
Так правильнее
C++
1
[minLength](const std::string & s)
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
11.07.2017, 18:06
Цитата Сообщение от ZarinZomanu4 Посмотреть сообщение
По условию 1 символ тоже считается палиндромом
И? Эта проверка итак имеется в for
C++
1
for(size_t len = str.size(), i = 0; i < len / 2; i++)
если len = 1, 1 / 2 даёт 0 и следовательно тело цикла не выполняется и функция возвращает true;
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
11.07.2017, 18:09
Цитата Сообщение от DevAlone Посмотреть сообщение
И тем не менее в приведённом случае все компиляторы передают адрес, да и вообще в большинстве случаев ссылка под капотом тот же указатель, а если компилировать с оптимизациями, то компилятор может и указатель в некоторых ситуациях убирать, как ненужный элемент.
а причем тут компиляторы, если мы о языковых понятиях говорим? )
0
11.07.2017, 18:11

Не по теме:

Цитата Сообщение от Captain Maxee Посмотреть сообщение
Грядет война...
Таки да! Жуём попкорн, наблюдаем, пока модераторы не пришли... :D

0
 Аватар для ZarinZomanu4
10 / 10 / 0
Регистрация: 27.05.2013
Сообщений: 92
13.07.2017, 15:37  [ТС]
Цитата Сообщение от DevAlone Посмотреть сообщение
И? Эта проверка итак имеется в for
Действительно это лишнее, спасибо что подсказали.

Добавлено через 31 минуту
Я дико извиняюсь, я только начал изучать эти премудрости, если не затруднит обьясните что к чему?
C++
1
2
3
4
5
6
7
8
9
10
std::vector<std::string> copy_filter(const std::vector<std::string> & vec, int minLength) {
    std::vector<std::string> ret;
    
    std::copy_if (vec.cbegin(), vec.cend(), std::back_inserter(ret), [=] (const std::string & s) 
 //копирование элементов и добавление в конец вектора ret если выполняется условие что переменная s типа string? 
//почему используется cbegin() а не просто begin()?
{ return ( s.length() >= minLength ) && is_palindrome(s); });// если выполняется условие 
//на копирование возвращается значение в скобках??
    
    return ret; а зачем тогда это?
Цитата Сообщение от easybudda Посмотреть сообщение
std::vector<std::string> v = { "abccba", "xxx", "qwerty1234", "eeeee" };
а как правильно можно внести в вектор значения вводя значения?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
13.07.2017, 16:17
Цитата Сообщение от ZarinZomanu4 Посмотреть сообщение
а как правильно можно внести в вектор значения вводя значения?
Всё здесь
std::vector::push_back
std::vector::emplace_back
0
 Аватар для ZarinZomanu4
10 / 10 / 0
Регистрация: 27.05.2013
Сообщений: 92
13.07.2017, 16:33  [ТС]
Цитата Сообщение от easybudda Посмотреть сообщение
Да я понял,спасибо,
А скажите есть место для жизни такой реализации?
C++
1
2
3
4
5
6
7
8
9
10
vector<string> PalindromFilter (vector<string> words, int minLength) {
vector<string> word;
 for (auto x: words) {
     if (IsPalindrom (x) && x.size()>= minlength)
          {
             word.push_back (x);};
     }
 }
    return word;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
13.07.2017, 19:52
Цитата Сообщение от ZarinZomanu4 Посмотреть сообщение
А скажите есть место для жизни такой реализации?
Ну работать-то должно бы. Но настоятельно рекомендую больше внимания форматированию кода уделять...
0
 Аватар для ZarinZomanu4
10 / 10 / 0
Регистрация: 27.05.2013
Сообщений: 92
13.07.2017, 22:31  [ТС]
Цитата Сообщение от easybudda Посмотреть сообщение
Но настоятельно рекомендую больше внимания форматированию кода уделять...
Вы имеете ввиду отступы?
0
0 / 0 / 0
Регистрация: 09.12.2019
Сообщений: 2
09.12.2019, 16:42
Цитата Сообщение от DevAlone Посмотреть сообщение
for(size_t i = 0; i < str.size() / 2; i++)
    if(str[i]!=str[str.size()-1-i])
Вроде все просто, но не пойму, к примеру введем строку dad - палиндром.
Проверяем i = 0 (т.е. первая буква - d)
str[0] != str[str.size() - 1 - 0]
строка = 2 (d=0, a=1, d=2 - так?),
тогда str [0] != str[2-1-0], 0 действительно не равен 1 - false, но dad-то палиндром?
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.12.2019, 17:40
Ya_Vik, вроде всё понятно, смотрите для Вашего примера dad
если первый элемент строки не равен последнему, возвращается false
str[0]!= str[str.size()-1-0] return false;

но у Вас первый элемент строки равен последнему str[0]==str[str.size()-1-0], поэтому false не возвращается. для Вашего примера на этом цикл завершён. после цикла стоит return true; - этот результат и возвратит функция.
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
09.12.2019, 17:48
Цитата Сообщение от Ya_Vik Посмотреть сообщение
тогда str [0] != str[2-1-0], 0 действительно не равен 1 - false, но dad-то палиндром?
а почему размер строки в вашем представлении равен 2?
1
0 / 0 / 0
Регистрация: 09.12.2019
Сообщений: 2
10.12.2019, 08:29
Цитата Сообщение от zayats80888 Посмотреть сообщение
а почему размер строки в вашем представлении равен 2?
3, конечно! а записываем в ячейку 2 (если можно так выразиться 0|1|2)
str[0] != str[3 - 1 - 0]
str[0] != str[2] - false, т.к. d = d

zayats, Yetty, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.12.2019, 08:29

Не работает функция определения OC
Подскажите почему не работает эта функция? Запускаю под линуксом он должен вывести 'OC linux' - но не чего не выводиться. Подскажите...

Функция определения IP компьютера.
помогите какая функция определяет ip компьютера

Функция определения, существует ли переменная
Есть ли такая функция, которая определяет, существует ли переменная? В PHP можно просто написать if ($var) {...} А в JS если пишешь ...

Функция определения максимального из двух
Возможно ли вызвать функцию max(определение максимального из двух чисел, если не объявить ее в тексте программы? Программа работает...

Функция определения високосного года
Подробно объяснить код uses crt; function IsLeapYear(y:word):boolean; begin IsLeapYear:=((y mod 100&lt;&gt;0)and(y mod 4=0))or(y mod...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru