0 / 0 / 0
Регистрация: 19.06.2018
Сообщений: 2
1

Проверить является ли заданная строка палиндромом (найти и исправить ошибки в коде)

20.07.2018, 02:08. Показов 2634. Ответов 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
    //Задание 5.
    //Дана строка символов.Необходимо проверить  является ли эта строка палиндромом.
    char mass[30]; int l = 0, k = 0, t = 0;
    cout << "Введите ваше слово: ";
    cin.getline(mass, 30);
    for (int i = 0; i < 30; i++) {
        for (int j = 0; j > i; j--) {
            if (j == i) {
                k++;
            }
            if (j != i) {
                t++;
            }
        }
        if (mass[i] >= 65 && mass[i] <= 90 || mass[i] >= 97 && mass[i] <= 122) {
            l++;
        }
    }
    cout << "Количество букв в вашем слове: " << l << endl;
    if (l/2 == k) {
        cout << "Ваше слово палиндромно!" << endl;
    }
    else {
        cout << "Ваше слово не палиндромно!" << endl;
    }
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.07.2018, 02:08
Ответы с готовыми решениями:

Определить, является ли заданная строка палиндромом
1. Определить, является ли заданная строка палиндромом (пример палиндрома:'А РОЗА УПАЛА НА ЛАПУ...

Функция определяющая является ли палиндромом заданная строка
4. Палиндром — это строка, которая читается одинаково в обоих направлениях. Например, &quot;tot&quot; и...

Дана строка символов. Является ли заданная она палиндромом
Пожалуйста,Помогите разобраться с ректорской к.р.! Вот есть задание: Дана строка символов....

Разработать рекурсивную функцию, определяющую является ли заданная строка палиндромом
разработать рекурсивную функцию, определяющую является ли заданная строка палиндромом

7
3782 / 3097 / 857
Регистрация: 25.03.2012
Сообщений: 11,460
Записей в блоге: 1
20.07.2018, 03:27 2
Лучший ответ Сообщение было отмечено fL1p0zZ как решение

Решение

Цитата Сообщение от fL1p0zZ Посмотреть сообщение
if (j == i)
и что это тут проверяется? Ничего, что i по условию цикла всегда меньше j?
Более того, любая другая комбинация из сравнений i и j тоже не имеет никакого отношения к палиндромам. Они же символы в строке должны проверять в цикле - то есть какие-то if (mass[чего-то]==mass[чего-то ещё]) должны быть в программе, а не чисто сравнения индексов!
0
1 / 1 / 0
Регистрация: 20.10.2009
Сообщений: 40
20.07.2018, 03:48 3
C++
1
2
3
4
5
for (int i = 0; i < 30; i++) {
for (int j = 0; j > i; j--) {
//...
}
}
Вложенный цикл for не будет выполняться никогда, так как j всегда меньше, чем i
0
0 / 0 / 0
Регистрация: 19.06.2018
Сообщений: 2
20.07.2018, 06:52  [ТС] 4
спасибо
0
"C with Classes"
1590 / 1369 / 512
Регистрация: 16.08.2014
Сообщений: 5,694
Записей в блоге: 1
20.07.2018, 07:34 5
fL1p0zZ,
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 <cstddef>
#include <string>
 
bool IsPalindrome(const std::string& s)
{
    size_t first = 0;
    size_t last = s.length() - 1;
 
    while (first < last)
    {
        if (s[first] != s[last] )
            return false;
 
        ++first;
        --last;
    }
 
    return true;
}
 
int main()
{
    std::string s1 = "aba";
    std::string s2 = "abc";
 
    bool r1 = IsPalindrome(s1);
    bool r2 = IsPalindrome(s2);
    
    return 0;
}
Добавлено через 31 секунду
зачем два цикла?

Добавлено через 4 минуты
fL1p0zZ,
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
#include <cstddef>
#include <iostream>
#include <string>
 
bool IsPalindrome(const std::string& s)
{
    size_t first = 0;
    size_t last = s.length() - 1;
 
    while (first < last)
    {
        if (s[first] != s[last] )
            return false;
 
        ++first;
        --last;
    }
 
    return true;
}
 
int main()
{
    std::string string;
 
    std::cout << "Enter string: ";
    std::cin >> string;
 
    if (IsPalindrome(string) )
        std::cout << "Good!";
    else
        std::cout << "Bad!";
    
    return 0;
}
0
Модератор
Эксперт по электронике
8734 / 6525 / 886
Регистрация: 14.02.2011
Сообщений: 22,839
20.07.2018, 07:36 6
_stanislav, у тебя проверяется слово а, требуется строка
Цитата Сообщение от fL1p0zZ Посмотреть сообщение
Дана строка символов.Необходимо проверить является ли эта строка палиндромом.
т.е классическое :"А роза упала на лапу Азора" не является палиндромом
необходимо сначала выкинуть из строки все пробелы, запятые, .....,
привести все символы в один регистр, а только потом проверять
0
"C with Classes"
1590 / 1369 / 512
Регистрация: 16.08.2014
Сообщений: 5,694
Записей в блоге: 1
20.07.2018, 07:48 7
Цитата Сообщение от ValeryS Посмотреть сообщение
у тебя проверяется слово а, требуется строка
не трудно поправить, мне просто его код страшный не понравился

Добавлено через 6 минут
Цитата Сообщение от ValeryS Посмотреть сообщение
необходимо сначала выкинуть из строки все пробелы, запятые, .....,
привести все символы в один регистр, а только потом проверять
по ходу цикл нужен
0
7421 / 5016 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
20.07.2018, 08:27 8
fL1p0zZ, для латиницы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
using namespace std;
 
int main ()
{
    bool b=true;
    string s;
    cout << "String:\n";
    getline(cin, s); 
    
    int n=s.size();
    for (int i=0; i<n/2; i++)
    if (s[i]!=s[n-1-i]) b=false;
    
    if (b) cout <<"PALINDROM\n";
    else cout <<"NO PALINDROM\n";
system("pause");
return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.07.2018, 08:27
Помогаю со студенческими работами здесь

Разработать рекурсивную функцию, определяющую, является ли заданная строка палиндромом
Разработать рекурсивную функцию, возвращающую значение: Определяющую, является ли заданная строка...

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

Проверить, является ли строка палиндромом
доброго времени суток. помогите пожалуйста. надо реализовать программу... словный палиндром... и...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru