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

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

Войти
Регистрация
Восстановить пароль
 
uper
0 / 0 / 1
Регистрация: 14.10.2014
Сообщений: 10
#1

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

17.12.2008, 07:32. Просмотров 1240. Ответов 1
Метки нет (Все метки)

ЗАдание следующее:

Написать программу, которая проверяет, является ли строка, введённая с клавиатуры палиндромом.
Строка может содержать буквы разных регистров, пробелы и другие символы.
При проверке должны учитываться только символы, являющиеся буквами. При этом не важно, к какому регистру принадлежит буква.

Решение(скопил у одногруппницы):
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include<iostream>
#include<string>
using namespace std;
bool IsBukva(char symbol)
{
switch(symbol)
{
case'a':return 1;break;
case'b':return 1;break;
case'c':return 1;break;
case'd':return 1;break;
case'e':return 1;break;
case'f':return 1;break;
case'g':return 1;break;
case'h':return 1;break;
case'i':return 1;break;
case'j':return 1;break;
case'k':return 1;break;
case'l':return 1;break;
case'm':return 1;break;
case'n':return 1;break;
case'o':return 1;break;
case'p':return 1;break;
case'q':return 1;break;
case'r':return 1;break;
case's':return 1;break;
case't':return 1;break;
case'u':return 1;break;
case'v':return 1;break;
case'w':return 1;break;
case'x':return 1;break;
case'y':return 1;break;
case'z':return 1;break;
case'A':return 1;break;
case'B':return 1;break;
case'C':return 1;break;
case'D':return 1;break;
case'E':return 1;break;
case'F':return 1;break;
case'G':return 1;break;
case'H':return 1;break;
case'I':return 1;break;
case'J':return 1;break;
case'K':return 1;break;
case'L':return 1;break;
case'M':return 1;break;
case'N':return 1;break;
case'O':return 1;break;
case'P':return 1;break;
case'Q':return 1;break;
case'R':return 1;break;
case'S':return 1;break;
case'T':return 1;break;
case'U':return 1;break;
case'V':return 1;break;
case'W':return 1;break;
case'X':return 1;break;
case'Y':return 1;break;
case'Z':return 1;break;
default:return 0;
}
}
char LowReg(char symbol)
{
switch(symbol)
{
case'A':return'a';break;
case'B':return'b';break;
case'C':return'c';break;
case'D':return'd';break;
case'E':return'e';break;
case'F':return'f';break;
case'G':return'g';break;
case'H':return'h';break;
case'I':return'i';break;
case'J':return'j';break;
case'K':return'k';break;
case'L':return'l';break;
case'M':return'm';break;
case'N':return'n';break;
case'O':return'o';break;
case'P':return'p';break;
case'Q':return'q';break;
case'R':return'r';break;
case'S':return's';break;
case'T':return't';break;
case'U':return'u';break;
case'V':return'v';break;
case'W':return'w';break;
case'X':return'x';break;
case'Y':return'y';break;
case'Z':return'z';break;
default:return symbol;
}
}
string CleanString(string input)
{
string output;
string temp;
int i;
for (i=0;i<=input.length()-1;i++)
{
if (IsBukva(LowReg(input.at(i))))
{
temp = LowReg(input.at(i));
output.append(temp,0,1);
}
}
return output;
}
bool palindrom(string output)
{
int i;
for(i=0;i<=output.length()-1;i++)
{
if(output.at(i)!=output.at(output.length()-i-1))
return 0;
}
return 1;
}
void main()
{
 
string stroka;
cout<<"Vvedi stro4ku: ";
cin>>stroka;
cout<<palindrom(CleanString(stroka))<<'\n';
}
Объясните плиз что там происходит в программе, а то мне надо преподу будет рассказать. Ребят, очень прошу, программирование не профильный предмет, но сдавать все равно его как-то надо...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2008, 07:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверить, является ли строка, введённая с клавиатуры, палиндромом (C++):

Используя стек, определить, является ли введённая с клавиатуры строка палиндромом - C++
Используя стек, определить, является ли введённая с клавиатуры строка палиндромом.

Используя стек, определить, является ли введённая с клавиатуры строка палиндромом. - C++
Используя стек, определить, является ли введённая с клавиатуры строка палиндромом. Не могу разобраться #include &quot;stdafx.h&quot; #include...

Определить, является ли введённая с клавиатуры строка текстовым сообщением - C++
Помогите пожалуйста

Определить, является ли введённая с клавиатуры строка двоичным числом - C++
Задание: Напишите программу, которая определяет, является ли введённая с клавиатуры строка двоичным числом. Люди помогите пожалуйсто...

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

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

1
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
17.12.2008, 08:46 #2
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
#include <stdio.h>
#include <ctype.h>
#include <string.h>
 
#define MAXLINE  1000    /* максимальная длина строки */
 
/* проверяет является ли строка палиндромом без учёта регистра,
   учитываются только буквы; под линем только инглиш */
main()
{
    char *reverse(char []);
    char line[MAXLINE], clear[MAXLINE], tmp[MAXLINE], *p, *q;
    int c;
    
    while ((p = fgets(line, MAXLINE, stdin)) != NULL) {
        for (q = clear; (c = *p++) != '\0'; )
            if (isalpha(c))
                *q++ = tolower(c);
        *q = '\0';
        strcpy(tmp, clear);
        if (strcmp(clear, reverse(tmp)) == 0
         && strlen(clear) > 1)
            printf("%s", line);
    }        
    return 0;
}
 
/* reverse: обращает строку s */
char *reverse(char s[])
{
    char *p, *q;
    int c;
    
    p = q = s;
    while (*q)
        q++;
    for (q-- ; p < q; p++, q--)
        c = *p, *p = *q, *q = c;
    return s;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2008, 08:46
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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