Проверить число в массиве на наличие палиндрома (именно через массив).
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <iostream> #include <cstring> using namespace std; int main() { setlocale(LC_ALL, "rus"); char s[20]; while (true) { cout << "Введите любое положительное целое : "; cin >> s; bool poli = true; for (unsigned i = 0; i <= strlen(s) / 2 + 1; i++) if (!(poli = s[i] == s[strlen(s) - i - 1])) break; cout << "число " << (poli ? "" : "не ") << "палиндром" << endl; } return 0; } |
Единственное место, которое в коде может вызвать затруднение, это логическое присвоение:
1 | poli = s[i] == s[strlen(s) - i - 1] |
Здесь проверяется равенство символов, отстоящих на i позиций от начала и от конца исследуемой строки. Если результат отрицательный (не равно), то это уже не палиндром, и можно выходить из цикла, а дальнейшие сравнения не проводить. Переменная poli здесь не является необходимой, и оставлена для наглядности – можно принимать решение (if) прямо из проверяемого условия.
Проверки делаются до середины строки, потому что дальнейшее продолжение цикла (из-за симметрии условия) только повторит то, что уже сделано ранее.
Выполнение:
Как легко смогут заметить наблюдательные читатели, этот код проверит на палиндром не только запись числа, но и любую текстовую строку, при выполнении таких условий:
- строка содержит только латинские (не русские, не китайские, …) литеры (интернациональные литеры в Unicode представляются более чем 1-м байтом);
- строка не содержит символов пробела и знаков препинания (потому что в определениях палиндромов эти символы, обычно, исключают из сравнений: “Я иду с мечем судия“, “На в лоб, болван“).
Ошибка в коде. Все двузначные числа, например: 11, 22, 33, …, 99 программа распознает как “не палиндромы”, хотя это не так. Код требует доработки.
Никакой ошибки! Вот проверка прогоном в операционной системе Linux с компилятором GCC, который куда точнее соответствует стандарту синтаксиса C++:
$ ./palindrom-
Введите любое положительное целое : 11
число палиндром
Введите любое положительное целое : 2
число палиндром
Введите любое положительное целое : 232
число палиндром
Введите любое положительное целое : 233
число не палиндром
Введите любое положительное целое : 2332
число палиндром
Введите любое положительное целое : 23432
число палиндром
Введите любое положительное целое : 234432
число палиндром
Введите любое положительное целое : ^C
Не знаю, почему у вас получаются такие результаты (возможно нужно расставить дополнительные скобки из-за приоритетов операций).
А как палиндром в массиве PHP будет писаться ?
А как палиндром в массиве на языке PHP будет
Торговая фирма «Восток» в конце каждого месяца подводит итоги, то есть вносит запись в книгу расходы и выручку от продажи. Составит программу для вычисления суммы полученных доходов за каждый квартал и определения в каком квартале был получен минимальный доход.