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

Палиндром... - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ на С++ Черно-белая графика http://www.cyberforum.ru/cpp-beginners/thread352088.html
Нужно решить на С++ Каждый элемент квадратной матрицы размеренности N x N равен нулю, либо единице. Найдите количество «островов», образованных единицами. Под «островом» понимается группа единиц...
C++ Вопрос по односвязному списку. Ребят у меня такой вопрос! Нам в универе дали задание реализовать односвязный список на базе массива с индексными указателями. Все хорошо, я знаю как сделать обычный список!А вот дополнение через... http://www.cyberforum.ru/cpp-beginners/thread352063.html
Буквенные сочетания. C++
Всем привет. Озадачился. Есть 2 регистра англ. алфавита, хочу вывести все 2х буквенные сочетания верхнего и нижнего регистра и соответственно нижнего с верхним и наоборот, на выходе 4 массива...
C++ Аффинные пространства
Помогите пожалуйста, у кого - нибудь есть готовая программа под Visual Studio 2008 реализации операций с аффинными элементами аффинного пространства или посоветовать книгу где есть эта программа?
C++ Построение бинарного дерева из строки http://www.cyberforum.ru/cpp-beginners/thread352039.html
Доброго времени суток, уважаемые. Хотел бы спросить у вас спросить совета относительно реализации следующей проблемы: Задано арифметическо-логическое выражение (к примеру,...
C++ Необходимо накопить сумму всех элементов массива, находящихся в интервале от А до В, и вывести её на экран. Всем доброго времени суток!!! Вкратце о проблеме: учусь на гуманитарном, новая специальность, никакой учебной программы нет. И тут нам начали впаривать информатику, программирование, причем за 2... подробнее

Показать сообщение отдельно
fasked
Эксперт С++
4937 / 2517 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
16.09.2011, 11:02
lp_4eva, этот цикл неверен. Так зачем его объяснять?
Определить является ли строка палиндромом можно следующим образом.
Палиндром...
Сравниваются символы с начала и конца строки, последовательно двигаясь к середине. Если хотя бы одна пара не равна, то строка не является палиндромом.
В простейшем случае на С++ это можно реализовать следующим образом:
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>
#include <string>
#include <cctype>
#include <vector>
 
bool is_palindrome(const std::string &word) {
   for (size_t i = 0; i < word.length()/2; ++i) {
      if (tolower(word[i]) != tolower(word[word.length() - i - 1]))
         return false;
   }
   
   return true;
}
 
int main() {
   std::vector<std::string> tests = {
      "God saw I was dog", "Dennis sinned", "This isn't palindrome"
   };
   
   for (size_t i = 0; i < tests.size(); ++i) 
      std::cout << tests[i] << ' ' << is_palindrome(tests[i]) << std::endl;
      
   return 0;
}
Функция tolower переводит символ в нижний регистр, чтобы проверка была не чувствительна к регистру. Например, чтобы символы 'a' и 'A' считались одинаковыми (читаются то ведь они одинаково, верно?).
3
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru