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

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

Войти
Регистрация
Восстановить пароль
 
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
#1

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

10.01.2013, 01:12. Просмотров 898. Ответов 7
Метки нет (Все метки)

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-й символ палиндромом
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2013, 01:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверить, является ли фрагмент строки символа палиндромом (C++):

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

Проверить является ли слово палиндромом - C++
Символьная строка содержит одно слово. Проверить, будет ли оно читаться одинаково справа налево и слева направо (т.е. является ли оно...

Проверить, является ли строка палиндромом - C++
Возможно я не первый кто просит помочь в данной задачи, но все же повторюсь. Задание: Проверить является ли строка палиндромом....

Проверить, является ли число палиндромом (do/while) - C++
Проверить, будет ли введенное число палиндромом (например, палиндромом 1254521 - он читается с права на лево так же, как слева на право).

Проверить является ли строка палиндромом - C++
Задана строка, состоящая из символов. Символы объединяются в слова. Слова друг от друга отделяются одним или несколькими пробелами. В конце...

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

7
Fareiro
15 / 15 / 1
Регистрация: 06.12.2012
Сообщений: 132
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++)
{
//Действие...
}
Ну это я образно если что)
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
10.01.2013, 07:56 #3
Цитата Сообщение от илья1995 Посмотреть сообщение
строки символа
символы не содержат строки и вообще неделимы, как атомы в учении древнегреческих атомистов и фундоментальные частицы в мечтах современных физиков.
0
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
10.01.2013, 21:46  [ТС] #4
Цитата Сообщение от taras atavin Посмотреть сообщение
символы не содержат строки и вообще неделимы, как атомы в учении древнегреческих атомистов и фундоментальные частицы в мечтах современных физиков.
это просто опечатка в названии тему само задание изложено в сообщении
так что никто не подскажет как это реализовать?
0
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;
}
1
илья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 минут
и эти переменные как бы выдерут из нашей первоначальной строки нужные нам символы и проверит их
0
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
11.01.2013, 23:31  [ТС] #7
как оформить эту программу в виде рекурсивной функции
0
valeriikozlov
Эксперт С++
4675 / 2501 / 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;
}
0
12.01.2013, 12:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2013, 12:00
Привет! Вот еще темы с ответами:

Проверить, является ли введенное число палиндромом - C++
Проверьте, является ли введенное число палиндромом. Например, 12321, 2442 - палиндромы. В С++.

Проверить, является ли введенный текст палиндромом - C++
:cry:

Проверить, действительно ли число является палиндромом - C++
Проверить истинность высказывания: «Данное четырехзначное число читается одинаково слева направо и справа налево». нужен код плз :)

Проверить является ли заданное слово палиндромом - C++
#include &lt;iostream.h&gt; int main() {char c; cout&lt;&lt;&quot;Vvedite slovo &quot;; cin&gt;&gt;c; system(&quot;pause&quot;);} Помогите, а то что то идей нету...


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

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

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