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

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

Войти
Регистрация
Восстановить пароль
 
uper
Сообщений: n/a
17.12.2008, 07:32     Проверить, является ли строка, введённая с клавиатуры, палиндромом #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';
}
Объясните плиз что там происходит в программе, а то мне надо преподу будет рассказать. Ребят, очень прошу, программирование не профильный предмет, но сдавать все равно его как-то надо...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2008, 07:32     Проверить, является ли строка, введённая с клавиатуры, палиндромом
Посмотрите здесь:

Проверить, является ли введенная с клавиатуры строка целым числом C++
C++ Проверить, является ли строка палиндромом
Определить, является ли введённая с клавиатуры строка двоичным числом C++
программа, которая проверяет, является ли введённая с клавиатуры строка шестнадцатеричным числом C++
C++ Используя стек, определить, является ли введённая с клавиатуры строка палиндромом
Используя стек, определить, является ли введённая с клавиатуры строка палиндромом. C++
C++ Проверить, является ли введенная строка палиндромом
C++ Проверить является ли строка палиндромом, учитывая пробелы и знаки препинания
Проверить, квадрат каких из введенных с клавиатуры чисел является палиндромом C++
Проверить является ли строка палиндромом C++
Проверить, является ли введенная с клавиатуры строка шестнадцатеричным числом C++
Определить, является ли введённая с клавиатуры строка текстовым сообщением C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
17.12.2008, 08:46     Проверить, является ли строка, введённая с клавиатуры, палиндромом #2
Код
 
#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;
}
Yandex
Объявления
17.12.2008, 08:46     Проверить, является ли строка, введённая с клавиатуры, палиндромом
Ответ Создать тему
Опции темы

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