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

Проверить, является ли фрагмент строки символа палиндромом - C++

Восстановить пароль Регистрация
 
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
10.01.2013, 01:12     Проверить, является ли фрагмент строки символа палиндромом #1
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> 
 
int main() 
{ 
    char* str; 
    str = new char[100];  
    int count = 0;
    int i, j;
    std::cout << "Inter a string " << std::endl; 
    std::cin.getline(str, 100); 
    int size = strlen(str); 
 
    for ( i = 0, j = size - 1; i < size / 2; i++, j--)  
        if(str[i] == str[j]) 
            count++; 
    if(count == size / 2) 
        std::cout << "Palindrom " << std::endl; 
    else 
        std::cout << "Ne palindrom " << std::endl;  
system("pause");
return 0;
}
вот есть программа которая проверяет ввденную строку на палиндром. как сделать так чтобы можно было проверять не полностью строку а часть строки ну например я ввел строку 10 символов а хочу проверить на палиндром с 2 символа и до 7 символа.
В общем задание звучит так: Проверить, является ли фрагмент строки с i-го по j-й символ палиндромом
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2013, 01:12     Проверить, является ли фрагмент строки символа палиндромом
Посмотрите здесь:

C++ Проверить, является ли строка, введённая с клавиатуры, палиндромом
Определить, является ли палиндромом часть строки s, начиная с i-го символа и заканчивая j-ым (рекурсия) C++
C++ Проверить, является ли строка палиндромом
Проверить является ли слово палиндромом C++
C++ Проверить, является ли введенное число палиндромом
C++ Проверить, является ли введенная строка палиндромом
C++ Проверить, является ли слово или число палиндромом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fareiro
15 / 15 / 1
Регистрация: 06.12.2012
Сообщений: 130
10.01.2013, 01:36     Проверить, является ли фрагмент строки символа палиндромом #2
ввести еще две переменных, получить данные i и j, и циклом проверять строку от i до j, а не от начала до конца

C++
1
2
3
4
5
6
7
cout<<"Enter i: "; cin>>i;
cout<<"Enter j: "; cin>>j;
 
for(;i<j;i++)
{
//Действие...
}
Ну это я образно если что)
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.01.2013, 07:56     Проверить, является ли фрагмент строки символа палиндромом #3
Цитата Сообщение от илья1995 Посмотреть сообщение
строки символа
символы не содержат строки и вообще неделимы, как атомы в учении древнегреческих атомистов и фундоментальные частицы в мечтах современных физиков.
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
10.01.2013, 21:46  [ТС]     Проверить, является ли фрагмент строки символа палиндромом #4
Цитата Сообщение от taras atavin Посмотреть сообщение
символы не содержат строки и вообще неделимы, как атомы в учении древнегреческих атомистов и фундоментальные частицы в мечтах современных физиков.
это просто опечатка в названии тему само задание изложено в сообщении
так что никто не подскажет как это реализовать?
FreeMinder
 Аватар для FreeMinder
36 / 36 / 2
Регистрация: 29.08.2012
Сообщений: 59
10.01.2013, 22:43     Проверить, является ли фрагмент строки символа палиндромом #5
Цитата Сообщение от Fareiro Посмотреть сообщение
циклом проверять строку от i до j
С таким подходом найти палиндромы будет сложно
Цикл должен доходить до середины расстояния между i и j.
Вариант решения: создать новую строку из имеющейся от i до j, и эту новую строку прогнать через ваш цикл.

Добавлено через 19 минут
Либо так:
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
#include<iostream>
 
int main()
{
    char* str; 
    str = new char[100];  
    int count = 0;
    int i, j;
    std::cout << "Enter a string " << std::endl; 
    std::cin.getline(str, 100);     
    std::cout << "Enter start: ";
    std::cin>>i;
    std::cout << "Enter end: ";
    std::cin>>j;
 
    for ( ; i < (j-i)/2; i++, j--)  
        if(str[i] == str[j]) 
            count++; 
    if(count == (j-i) / 2) 
        std::cout << "Palindrom " << std::endl; 
    else 
        std::cout << "Ne palindrom " << std::endl;  
    system("pause");
    delete str;
    return 0;
}
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
10.01.2013, 23:04  [ТС]     Проверить, является ли фрагмент строки символа палиндромом #6
Цитата Сообщение от FreeMinder Посмотреть сообщение
С таким подходом найти палиндромы будет сложно
Цикл должен доходить до середины расстояния между i и j.
Вариант решения: создать новую строку из имеющейся от i до j, и эту новую строку прогнать через ваш цикл.

Добавлено через 19 минут
Либо так:
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
#include<iostream>
 
int main()
{
    char* str; 
    str = new char[100];  
    int count = 0;
    int i, j;
    std::cout << "Enter a string " << std::endl; 
    std::cin.getline(str, 100);     
    std::cout << "Enter start: ";
    std::cin>>i;
    std::cout << "Enter end: ";
    std::cin>>j;
 
    for ( ; i < (j-i)/2; i++, j--)  
        if(str[i] == str[j]) 
            count++; 
    if(count == (j-i) / 2) 
        std::cout << "Palindrom " << std::endl; 
    else 
        std::cout << "Ne palindrom " << std::endl;  
    system("pause");
    delete str;
    return 0;
}
спасибо ваш вариант задачи работает как надо
я так понял нужно было перед циклом добавить 2 переменные

Добавлено через 5 минут
и эти переменные как бы выдерут из нашей первоначальной строки нужные нам символы и проверит их
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
11.01.2013, 23:31  [ТС]     Проверить, является ли фрагмент строки символа палиндромом #7
как оформить эту программу в виде рекурсивной функции
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2013, 12:00     Проверить, является ли фрагмент строки символа палиндромом
Еще ссылки по теме:

Проверить является ли строка палиндромом C++
C++ Проверить является ли заданное слово палиндромом
C++ Проверить, является ли введенный текст палиндромом
Проверить, действительно ли число является палиндромом C++
C++ Проверить, является ли число палиндромом (do/while)

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

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
12.01.2013, 12:00     Проверить, является ли фрагмент строки символа палиндромом #8
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
#include <iostream> 
 
bool rec(char* str, int l, int r)
{
    if(l>=r)
        return true;
    if(str[l]!=str[r])
        return false;
    return rec(str,l+1,r-1);
}
int main() 
{ 
    char* str; 
    str = new char[100];  
    int count = 0;
    int i, j;
    std::cout << "Inter a string " << std::endl; 
    std::cin.getline(str, 100); 
    int size = strlen(str); 
    std::cout << "i= ";  
    std::cin >> i;
    std::cout << "j= ";  
    std::cin >> j;
    if(rec(str,i,j))
        std::cout << "Palindrom " << std::endl; 
    else 
        std::cout << "Ne palindrom " << std::endl;  
    system("pause");
return 0;
}
Yandex
Объявления
12.01.2013, 12:00     Проверить, является ли фрагмент строки символа палиндромом
Ответ Создать тему
Опции темы

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