Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 248, средняя оценка - 4.85
Maxvarlamov
1 / 1 / 0
Регистрация: 25.01.2010
Сообщений: 18
#1

Написать функцию, проверяющую является ли введенная строка палиндромом - C++

12.03.2010, 15:08. Просмотров 33595. Ответов 31
Метки нет (Все метки)

Помогите пожалуйста.
Реализовать функцию, которая принимает строку и возвращает истину, если строка является палиндромом.
1
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2010, 15:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать функцию, проверяющую является ли введенная строка палиндромом (C++):

Проверить, является ли введенная строка палиндромом - C++
Написать программу, которая проверяет, является ли введенная строка палиндро- мом "А роза упала на лапу азора" - выводит что не...

Написать функцию, которая определяет, является ли строка палиндромом - C++
Всем привет! Облазил весь интернет, но так и не нашел решение задачи, не могу понять что означает bool isPolindrom(const char *s) как я...

Дана строка символов до точки. Составить программу, проверяющую, является ли данная строка палиндромом, т. е. читается ли она слева направо и справа н - C++
Дана строка символов до точки. Составить программу, проверяющую, является ли данная строка палиндромом, т. е. читается ли она слева направо...

Написать программу проверяющую является ли строка полиндромом - C++
Написать программу проверяющую является ли строка полиндромом

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

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

31
XuTPbIu_MuHTAu
Эксперт С++
2226 / 741 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
12.03.2010, 21:26 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
bool palindrom( char * str) { 
    int left_index = 0;
    int right_index = strlen(str)-1;
 
 
    while( left_index < right_index ) 
        if( str[left_index++]!= str[right_index--]) 
            return false;
 
    return true;
};
8
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
12.03.2010, 21:30 #3
http://www.cyberforum.ru/cpp-beginners/thread89873.html#post506088
0
xBot01
10 / 10 / 1
Регистрация: 25.09.2009
Сообщений: 17
13.03.2010, 18:43 #4
Тоже палиндром.
Если поменять все на long, то будут обрабатываться русские символы.
0
Maxvarlamov
1 / 1 / 0
Регистрация: 25.01.2010
Сообщений: 18
13.03.2010, 20:13  [ТС] #5
А как сделать так, чтобы и пробелы учитывать, и чтобы не использовать <string.h>? Очень прошу, пришлите полный код программы
0
XuTPbIu_MuHTAu
Эксперт С++
2226 / 741 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
14.03.2010, 16:22 #6
Цитата Сообщение от Maxvarlamov Посмотреть сообщение
А как сделать так, чтобы и пробелы учитывать, и чтобы не использовать <string.h>?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int strlen(char * str) { 
      int i=0;
      while(str[i++]) ;
      return i-1;
};
bool palindrom( char * str) { 
        int left_index = 0;
        int right_index = strlen(str)-1;
//на тот случай,если начинается или заканчивается пробелами
        while( str[left_index]==' ') left_index++;
        while( str[right_index]==' ') right_index++ ;  
 
        while( left_index < right_index )  {
              //сравниваем
              if( str[left_index]!= str[right_index]) 
                        return false;
             // пропускаем пробелы
              while( str[++left_index]==' ') ;
              while( str[--right_index]==' ') ;  
                
        } 
        return true;
};
1
Only_HED
4 / 4 / 0
Регистрация: 28.05.2009
Сообщений: 29
15.03.2010, 17:02 #7
Еще один пример

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
29
30
31
32
#include <iostream>
#include <conio.h>
using namespace std;
 
char LIFO[100],ch[100];
int Empty,i,Top;
void Push(char number);
 
int main()
{
    cin>>ch;
    Top=0;
    for (i=0;i<strlen(ch);i++)
    {
        Push(ch[i]);
        if (LIFO[Top-1]==LIFO[Top-2] && Top>1)
        {
            Top-=2;
        }
    }
        if (Top==0)
            cout<<"Yes"<<endl;
        else
            cout<<"No"<<endl;       
    system("PAUSE");
}
 
void Push(char number)
{
    LIFO[Top]=number;
    Top++;
}
1
koc94ok
10 / 10 / 1
Регистрация: 22.04.2010
Сообщений: 507
10.05.2010, 20:00 #8
а как сделать чтоб из строки выдиралось по слову и проверялось на палиндромность "С"?
0
протест
0 / 0 / 0
Регистрация: 18.04.2011
Сообщений: 20
23.04.2011, 22:27 #9
а как сделать, чтобы из стороки брался набор символов с позиции i по позицию j и проверял палиндром ли он????
0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
24.04.2011, 13:21 #10
Цитата Сообщение от протест Посмотреть сообщение
а как сделать, чтобы из стороки брался набор символов с позиции i по позицию j и проверял палиндром ли он????
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
29
30
31
32
33
34
35
36
37
#include <stdio.h>
#include <string.h>
 
int isPalSubStr(const char* s, size_t i, size_t j)
{
    size_t t = strlen(s);
    if(i < 0 || i >= t || j < 0 || j >= t) return 0;
 
    if(i > j)
    {
        t = i;
        i = j;
        j = t;
    }
 
    while(i < j)
        if(s[i++] != s[j--]) return 0;
    return 1;
}
 
//-------
 
int main()
{
    size_t i, j;
    char s[256];
 
    printf("string: ");
    gets(s);
 
    printf("i and j: ");
    scanf("%d%d", &i, &j);
 
    puts(isPalSubStr(s, i, j)? "yes" : "no");
 
    return 0;
}
0
протест
0 / 0 / 0
Регистрация: 18.04.2011
Сообщений: 20
24.04.2011, 13:45 #11
а не в C, а в C++ как написать????????
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
24.04.2011, 14:40 #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
#include <algorithm>
 
bool isPal(std::string::const_iterator first, std::string::const_iterator second)
{
    const std::string string(first, second);
    std::string tmp_str;
    std::remove_copy(string.begin(), string.end(), std::back_inserter(tmp_str), ' ');
    return tmp_str == std::string(tmp_str.rbegin(), tmp_str.rend());
}
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    int first = 0, second = 0;
    std::cout<<"Enter [start, end) indexes: ";
    std::cin>>first>>second;
    std::cout<< (isPal(str.begin() + first, str.begin() + second) ? "Yes" : "No");
}
1
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
24.04.2011, 18:45 #13
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
#include <iostream>
#include <string>
#include <algorithm>
 
bool isPal(const std::string& s, size_t i, size_t j)
{
    if(i >= s.length() || j >= s.length()) return false;
    if(i > j) std::swap(i, j);
    return std::equal(s.begin() + i, s.begin() + j, s.rbegin() + s.length() - j - 1);
}
 
int main()
{
    std::cout << "string: ";
    std::string s;
    std::getline(std::cin, s);
 
    size_t i, j;
    std::cout << "i and j: ";
    std::cin >> i >> j;
 
    std::cout << (isPal(s, i, j)? "yes" : "no" );
 
    return 0;
}
1
протест
0 / 0 / 0
Регистрация: 18.04.2011
Сообщений: 20
24.04.2011, 21:03 #14
спасибо большое))))
0
протест
0 / 0 / 0
Регистрация: 18.04.2011
Сообщений: 20
18.05.2011, 21:48 #15
C++
1
2
3
4
5
6
7
bool isPal(std::string::const_iterator first, std::string::const_iterator second)
{
    const std::string string(first, second);
        std::string tmp_str;
        std::remove_copy(string.begin(), string.end(), std::back_inserter(tmp_str), ' ');
    return tmp_str == std::string(tmp_str.rbegin(), tmp_str.rend());
}
или

C++
1
2
3
4
5
6
bool isPal(const std::string& s, size_t i, size_t j)
{
    if(i >= s.length() || j >= s.length()) return false;
    if(i > j) std::swap(i, j);
    return std::equal(s.begin() + i, s.begin() + j, s.rbegin() + s.length() - j - 1);
}
является рекурсивной функцией????? или как ее написать
0
18.05.2011, 21:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2011, 21:48
Привет! Вот еще темы с ответами:

Написать программу, которая проверяет, является ли введенная с клавиатуры строка дробным числом - C++
Написать программу, которая проверяет, является ли введенная с клавиатуры строка дробным числом.

Написать программу, которая определяет, является ли введенная с клавиатуры строка целым числом - C++
1. Написать программу, которая определяет, является ли введенная с клавиатуры строка целым числом. 2. Дана строка символов среди...

Написать программу, которая проверяет, является ли введенная с клавиатуры строка шестнадцатеричным числом - C++
Написать программу, которая проверяет, является ли введенная с клавиатуры строка шестнадцатеричным числом.

Написать программу, которая проверяет, является ли введенная с клавиатуры строка дробным отрицательным числом - C++
Сделайте пожалуйста. Нужно написать программу, которая проверяет, является ли введенная с клавиатуры строка дробным отрицательным числом.


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

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

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