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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 248, средняя оценка - 4.85
Maxvarlamov
1 / 1 / 0
Регистрация: 25.01.2010
Сообщений: 18
12.03.2010, 15:08     Написать функцию, проверяющую является ли введенная строка палиндромом #1
Помогите пожалуйста.
Реализовать функцию, которая принимает строку и возвращает истину, если строка является палиндромом.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2010, 15:08     Написать функцию, проверяющую является ли введенная строка палиндромом
Посмотрите здесь:

C++ является ли введенная строка восьмеричным числом
C++ Написать программу, которая проверяет, является ли введенная с клавиатуры строка двоичным числом.
C++ является ли введенная с клавиатуры строка вещественным числом
C++ В целочисленном массиве найти и напечатать те элементы, которые являются степенью 2. Написать функцию, проверяющую, является ли число степенью 2.
Дана строка символов до точки. Составить программу, проверяющую, является ли данная строка палиндромом, т. е. читается ли она слева направо и справа н C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
(SkyNet)
 Аватар для (SkyNet)
22 / 40 / 6
Регистрация: 25.10.2011
Сообщений: 175
07.11.2011, 20:59     Написать функцию, проверяющую является ли введенная строка палиндромом #21
Не работает, функции динамической памяти не правельно написаны.

Добавлено через 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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <stdio.h>
#include <string.h>
#define DELIMITERS  " .,:;\n\t"           /* символы-разделители */
#define N 500
 
/* проверка на симметричность */
int Symmetric(char *s)
{
   int i, j;
   i = 0;
   j = strlen(s) - 1;
   while(i < j && s[i] == s[j])
   {
       i++;
       j--;
   }
   return i >= j;
}
 
int main( )
{
   char sentence[N];       /* исходная строка */
   char *word;               /* очередное слово в предложении */
           int flag[256] = {0}, len, i, j;
   len = strlen(DELIMITERS);
   /* если символ с кодом i является символом-разделителем,   то полагаем flag[i] = 1: */
   for (i = 0; i < len; i++)
              flag[DELIMITERS[i]] = 1;
   fgets(sentence, N, stdin);       /* вводим строку с клавиатуры */
   i = 0;
   while (sentence[i])
   {
      /* пропускаем все разделители */
      while (sentence[i] && flag[sentence[i]])
         i++;
      j = i;                                               /* позиция начала нового слова */
      /* определяем позицию окончания очередного слова в строке */
      while (sentence[i] && !flag[sentence[i]])
         i++;
      /* выделяем память для очередного слова: */
      char *word = new char[i-j+1];
      //word = (char *)malloc((i - j + 1) * sizeof(char));
      /* копируем в переменную word символы очередного слова */
      strncpy(word, &sentence[j], i - j);
      word[i - j] = '\0';
      if(Symmetric(word))
         puts(word);
      delete [] word;
      //free(word);      /* освобождаем динамическую память */
      word = NULL;
   }
   getchar();
   return 0;
}
Ага оно и видно что не сама делала, а ищё на ковото гонит, функции старые как свет. У меня так роботает. И на том спасибо!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
07.11.2011, 21:27     Написать функцию, проверяющую является ли введенная строка палиндромом #22
Цитата Сообщение от (SkyNet) Посмотреть сообщение
Не работает, функции динамической памяти не правельно написаны.

Ага оно и видно что не сама делала, а ищё на ковото гонит, функции старые как свет. У меня так роботает. И на том спасибо!!!
<stdlib.h> надо еще подключить. Вообще-то сама прописывала алгоритм.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
08.11.2011, 21:00     Написать функцию, проверяющую является ли введенная строка палиндромом #23
Внесу свой вклад.

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <stdio.h>
 
const char * delimiters = " ,.?!:;'\"()[]{}&_|\\/\n";
 
char is_one_of( const char ch, const char * rvals )
{
    while( *rvals && *rvals != ch )
       rvals++;
 
    return *rvals && *rvals == ch;
}
 
char * find_word_begin( const char * ptr )
{
    while( *ptr && is_one_of( *ptr, delimiters ) )
       ptr++;
 
    return ptr;
}
 
char * find_word_end( const char * ptr )
{
    while( *ptr && !is_one_of( *ptr, delimiters ) )
       ptr++;
 
    return ptr;
}
 
void fout_range( const char * begin, const char * end, FILE * file )
{
    while( begin != end )
        fputc( *begin++, file );
}
 
char is_symmetrical( const char * begin, const char * end )
{
    while( *begin++ == *--end );
    return begin != end;
}
 
int main()
{
    #define STRING_LNG 256
    char str[ STRING_LNG ];
 
    fputs( "> ", stdout );
    fgets( str, STRING_LNG, stdin );
 
    char * word_begin = str,
         * word_end = str;
 
    while( *(word_end = find_word_end( word_begin = find_word_begin( word_end ) )) )
    {
        fout_range( word_begin, word_end, stdout );
        printf( ": %ssymmetrical\n", is_symmetrical( word_begin, word_end ) ? "" : "not " );
    }
 
    return 0;
}
Хотя, похоже, проблема уже решена.

Добавлено через 3 минуты

Не по теме:

Ого, первый пост вообще старый.

Novyichok_v_del
1 / 1 / 0
Регистрация: 15.06.2011
Сообщений: 29
10.12.2011, 10:31     Написать функцию, проверяющую является ли введенная строка палиндромом #24
-Вопрос можно?
-Можно...
-Так вопрос заключается в том, что он якобы на строки, но не конкретно к палиндромам, нужно так забабахать, чтобы можно было вводить через пробелы прилагательные, и выводить их количество по окончаниям (Н-р: вывод: окончаний на -ая-столько-то; окончаний на -ое- столько-то; окончаний на -ый- столько-то
-......../

Добавлено через 16 минут
Цитата Сообщение от Novyichok_v_del Посмотреть сообщение
-Вопрос можно?
-Можно...
-Так вопрос заключается в том, что он якобы на строки, но не конкретно к палиндромам, нужно так забабахать, чтобы можно было вводить через пробелы прилагательные, и выводить их количество по окончаниям (Н-р: вывод: окончаний на -ая-столько-то; окончаний на -ое- столько-то; окончаний на -ый- столько-то
-......../
...а так я нашёл здесь кое-что, но оно нихрена не пашета именно в нём не реализован ввод с клавиатуры и плюс ко всему какой-то нахрен namspace, который не запускается на стареньком турбо-с++)
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
#include <iostream.h>
#include <string.h>
#include <vector.h>
#include <locale.h>
using namespace std;
 
int main(int argc, char * argv[])
{
        setlocale(LC_ALL, "ru_RU.UTF-8");
 
        const wchar_t* strs[] = {L"зеленые", L"варённые", L"отварное", L"угарное", L"старая"};
 
        vector<wstring> v(strs, strs + 5);
 
        int k=0;
        for(int i=0; i<v.size(); i++)
        {
                if(v[i].size()>2 &&
                    (      v[i].substr(v[i].size()-2, 2) == L"ый"
                        || v[i].substr(v[i].size()-2, 2) == L"ая"
                        || v[i].substr(v[i].size()-2, 2) == L"ое"
                    ))
                        k++;
 
        }
        wcout << k << endl;
        return 0;
}
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
10.12.2011, 13:02     Написать функцию, проверяющую является ли введенная строка палиндромом #25
Novyichok_v_del, хтож вам виноват, что сейчас на дворе 2011 год со стандартом C++11, а вы пользуетесь Turbo C++ 3 91-го года?
TheAthlete
 Аватар для TheAthlete
151 / 151 / 12
Регистрация: 31.08.2010
Сообщений: 529
10.12.2011, 16:43     Написать функцию, проверяющую является ли введенная строка палиндромом #26
тем более в новом стандарте (в том числе C++03 и тем более C++11) заголовочные файлы пишутся без .h, т.е
C++
1
2
3
#include <iostream>
#include <string>
#include <vector>
и лучше использовать
C++
1
2
using std::vector;
using std::wcout;
и т.д.

вместо

using namespace std;
Novyichok_v_del
1 / 1 / 0
Регистрация: 15.06.2011
Сообщений: 29
11.12.2011, 18:55     Написать функцию, проверяющую является ли введенная строка палиндромом #27
Цитата Сообщение от talis Посмотреть сообщение
Novyichok_v_del, хтож вам виноват, что сейчас на дворе 2011 год со стандартом C++11, а вы пользуетесь Turbo C++ 3 91-го года?
отвечу, дабы прояснить ситуацию: учусь, а учат нас пока на истоках, тоесть закладывают фундамент...и вопросов в этом не должно быть на мой взгляд.
Spirited
7 / 7 / 0
Регистрация: 18.01.2009
Сообщений: 55
11.12.2011, 20:15     Написать функцию, проверяющую является ли введенная строка палиндромом #28
Цитата Сообщение от Novyichok_v_del Посмотреть сообщение
какой-то нахрен namspace, который не запускается на стареньком турбо-с++)
Вас никто не заставляет писать namspace, если не пашет - удалите его, если все равно не пашет - оставте его, но удалите всего два символа .h в названиях файлов которые прописываються в инклуда.
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
12.07.2012, 11:52     Написать функцию, проверяющую является ли введенная строка палиндромом #29
Может кому пригодится простенький вариант
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
#include <iostream> 
using namespace std; 
int main() 
{   
    char str[100];
    cout << "Inter a string " << endl; 
    cin.getline(str, 100);
    int size = strlen(str); 
    int i, j;  
    int count = 0; 
 
    for ( i = 0, j = size - 1; i < size / 2; i++, j--) 
    {  
        if(str[i] == str[j]) 
            count++;
    }  
 
   if( count == size / 2) 
        cout << "Palindrom " << endl;   
        
    else  
        cout << "Ne palindrom " << endl;  
        
}
sergei60
47 / 28 / 4
Регистрация: 10.06.2012
Сообщений: 334
07.11.2014, 16:52     Написать функцию, проверяющую является ли введенная строка палиндромом #30
David Sylva,
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.h>
using namespace std; 
int main() 
{   
    char s[100];
    cout << "введите строку" << endl; 
    cin.getline(s, 100);
    int n = strlen(s); 
int k =0;
    for (int i = 0;  i < n / 2; i++ ){
 
if(s[i]!=s[n-1-i])
k=1;
}
if(k==1)
    cout << "непалиндром " << endl;
 
      else 
    cout<<"палиндром"<<endl;
}
вот получился еще немножко короче . я избавился от J и сложностями с ++,обьявил просто переменную k как аналог булевой переменной.
Phil
 Аватар для Phil
116 / 116 / 38
Регистрация: 28.05.2014
Сообщений: 492
17.11.2014, 11:35     Написать функцию, проверяющую является ли введенная строка палиндромом #31
Написать программу, которая ищет в строке номер символа, с которого начинается палиндром – последовательность символов, которая читается одинаково в обе стороны и имеет длину не менее 5 символов, например, kazak, и печатает на экране эту последовательность.

Часть программы реализовал из имеющегося материала этой темы, часть допили сам, но как теперь вставить номер символа, с которого начинается палиндром (ведь он там может быть не один) я не пойму.
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>
#include <cstdlib>
#include <cstring>
using namespace std;
bool is_palindrom(const string &s) {
  return equal(s.begin(), s.end(), s.rbegin());
}
int is_lenght (string &s)
{
  return (s.length());
}
int main() {
string palindrom;
  cout << "Enter palindrom: ";
 while( cin >> palindrom) {
    if ((is_palindrom(palindrom))&&(is_lenght(palindrom)>4))
      cout << " +++  This is palindrom -  " << palindrom<<endl;
    else
      cout << " ---  This is not palindrom - " <<palindrom<< endl;
  }
 system("pause");
  return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2016, 20:27     Написать функцию, проверяющую является ли введенная строка палиндромом
Еще ссылки по теме:

Дана строка символов. Проверьте,является ли данная строка палиндромом C++
C++ Разработать рекурсивную функцию, определяющую является ли заданная строка палиндромом
Написать программу, которая проверяет, является ли введенная с клавиатуры строка дробным отрицательным числом C++

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

Или воспользуйтесь поиском по форуму:
yutsura
 Аватар для yutsura
-59 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 29
13.10.2016, 20:27     Написать функцию, проверяющую является ли введенная строка палиндромом #32
А я написал программу, которая проверяет, является ли число палиндромом
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
int nlength(int number) //функция для нахождения длины числа
{    
    int counter=0;
    while(number)
    {        
        number=number/10;
        counter++;
    }
    return (counter);
}
 
int reverse(int x)
{
    int multiplier = 10;//множитель
    int arr[nlength(x)] = {};//массив для хранения разрядов числа
    int i = 0;
    int size = nlength(x);//переменная для размера числа
 
    while(i < size)
    {
        //временная переменная для хранения начального значения числа
        int temp = x;
        //сокращаем число на один разряд, чтобы убрать лишние числа
        x = x / multiplier;
        //прибавляем один разряд, но уже без лишних чисел
        x = x * multiplier;
        //от исходного числа отнимаем полученное число
        temp = temp - x;
        if (i != 0)//первое число не нужно понижать в разряде
        {
            temp /= multiplier / 10;//сокращаем число на один разряд
        }
        //помещаем один разряд числа в массив
        arr[i] = temp;
        //увеличиваем множитель в 10 раз, чтобы при следующей итерации работать с числом на один разряд больше
        multiplier *= 10;
        i++;//увеличиваем i, чтобы перейти к следующему разряду
    }
    
    for (int i = 0, j = size-1; i < size-1; i++, j--)
    {
        //в этом цикле мы возводим множитель в степень j, где j это номер цифры по порядку
        multiplier = 10;
        multiplier = pow(multiplier, j);
        arr[i] *= multiplier;
    }
    
    int result = 0;
    
    for (int i = 0; i < size; i++)
    {
        result += arr[i];
    }
    
    return result;
    
}
 
int main()
{
    
    int x;
    cout << "Введите число : ";
    cin >> x;
    if (x == reverse(x)) cout << "Число является полиндромом" << endl;
    else cout << "Число не является полиндромом" << endl;
    
    return 0;
}
Yandex
Объявления
13.10.2016, 20:27     Написать функцию, проверяющую является ли введенная строка палиндромом
Ответ Создать тему
Опции темы

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