Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 22.11.2019
Сообщений: 41

По заданному числу N определите следующее за ним число, являющееся палиндромом

04.12.2019, 05:43. Показов 4133. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Используя строки (любые), по данному натуральному числу N определите следующее за ним натуральное число (то есть наименьшее число, которое превосходит N), являющееся палиндромом. Вот мой код но выходит какая ерунда:
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
#include <iostream>
#include <cstring>
#include <stdlib.h>
using namespace std;
int main() 
{setlocale(LC_CTYPE, "rus");
int a, b=0, n;
char *s=new char[20];
char *s2=new char[4];
cout<<"N: \n";
cin>>s;
strlen(s);
strncpy(s2,s,3);
n=atoi(s2);
while(1)
    {n++;
    a=n;
   while (a!=0) 
        {b=b*10+a%10;
        a=a/10;
        cout<<"Следующий палиндром – это "<<b;}
    if ( n == b )
        cout<<b;
    else 
        b=0;}
return 0;}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.12.2019, 05:43
Ответы с готовыми решениями:

По заданному числу n от 1 до 365 определите, на какое число какого месяца приходится день невисокосного года с
В чем моя ошибка? Free Pascal По заданному числу n от 1 до 365 определите, на какое число какого месяца приходится день невисокосного...

По данному простому числу найти следующее за ним простое.
Решить нужно на языке Pascal. Задача такая: По данному простому числу найти следующее за ним простое. Мои мысли по задаче: пусть...

Определить, есть ли хотя бы одно число, которое кратно заданному числу А и не кратно заданному числу В
Составить программу для решения предложенной задачи. Выясните имеются ли среди чисел i3 – 17*i*n2 + n3, i = 1,2,…,n хотя бы одно число,...

18
43 / 39 / 5
Регистрация: 16.09.2019
Сообщений: 285
04.12.2019, 09:54
нужна функция проверяющая "палиндромность" обычного числа переводя его внутри в строку
инкрементировать надо именно число, а не строки
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
04.12.2019, 10:04
Цитата Сообщение от 002910 Посмотреть сообщение
Вот мой код но выходит какая ерунда:
а что ты хотел вот этой строчкой
Цитата Сообщение от 002910 Посмотреть сообщение
cout<<"Следующий палиндром – это "<<b;}
и вот это
Цитата Сообщение от 002910 Посмотреть сообщение
while(1)
программа повисла?
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
04.12.2019, 11:18
Информация к размышлению.
Пусть число (x).... (в скобках цифры)
Если x < 9, то палиндромом большим данного числа будет (x+1) (0) ... (0) (x+1)
Если x==9, то (1) (0) ...(0) (1)
Это не палиндромы, которые требуются в задаче. Могут быть и меньшие. Но (а) Ограничивается область поиска (б) посмотрев, как составлены эти палиндромы, можно подумать, как составить "хорошие"

Добавлено через 13 минут
И размышления дают такой результат.
Пусть число имеет четное количество знаков и имеет вид ... (y) (z) ...
(y) - последняя цифра левой половины. Если z < y, нужный палиндром получается отзеркаливанием левой половины.
z == y - рассматриваем пару по бокам ... (y2)(y)(y)(z2)
z > y - Прибавляем к числу, образованному левой половины 1 (единичку) и аккуратно его отзеркаливаем.
Похожим образом рассматриваем нечетный случай.
0
0 / 0 / 0
Регистрация: 22.11.2019
Сообщений: 41
04.12.2019, 11:52  [ТС]
ValeryS, да, зависла, я хотела вывести полиндом
0
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
04.12.2019, 12:01
Проверка на палиндром (билдер), взято отсюда Найти простые числа, двоичная запись которых представляет собой симметричную последовательность нулей и единиц:
C++
1
2
3
4
5
6
7
8
9
10
11
bool IsSymmetric (String str)
{
  bool res = 1;
  for (int i = 1; i <= str.Length()/2; i++)
    if (str[i] != str[str.Length()-i+1])
    {
      res = 0;
      break;
    }
  return res;
}
Не знаю, как в "обычном C++" (не пользуюсь), а в билдере перевод числа в строку можно сделать встроенной функцией вроде IntToStr() или String().
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
04.12.2019, 20:43
Что я могу сказать? Мои размышлеия приводят к простому выводу - да! мы его найдем! И довольно скоро. И вполне можно сбацать цикл типа
C++
1
2
3
4
int k;
for(k=N ; ; k++) {
  if (isPolindrom(k)) break;
}
И цикл не будет бесконечным.
Если вам надо просто получить ответ, то этого вполне достаточно.
И кода я тут писать не буду. Ибо вы легко его напишите сами.
Но мне, как бы это сказать? интереснее проникнуть в суть задачи. А нельзя ли тупой брут-форс заменить на нечто более осмыленное? Это мой бздик такой. И если вам это неинтересно, вы вполне вправе пропускать мои соображения мимо ушей.

Добавлено через 8 минут
gunslinger, Код ваш чудо как хорош! Он делает очень важную штуку - проверяет палиндромность строки. Да, это часть задачи. Видимо, по вашему мнению, ключевая. И вряд ли кто-то лучше вас проверит строку на палиндромность. Но смысл и "изюм" ее вовсе не в том.
1
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
04.12.2019, 20:58
Цитата Сообщение от Байт Посмотреть сообщение
А нельзя ли тупой брут-форс заменить на нечто более осмыленное?
у меня есть мысль и я её буду думать
мысль моя такова, берем первую цифру(самую старшую) и ставим её на место самой младшей
если полученное число меньше то увеличиваем старшую и младшую цифру на 1 заполняя промежуток между ними, если он есть, нулями например 193=> 191=> 202
если полученное число больше или равно то переходим ко второй паре вторая-предпоследняя
и так до окончания
чувствую есть здесь какой-то затык но пока не знаю какой
1
43 / 39 / 5
Регистрация: 16.09.2019
Сообщений: 285
04.12.2019, 23:23
Цитата Сообщение от ValeryS Посмотреть сообщение
чувствую есть здесь какой-то затык но пока не знаю какой
для сотки не прокатит, например...
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
04.12.2019, 23:28
Цитата Сообщение от БедолагаЖека Посмотреть сообщение
для сотки не прокатит, например
для сотки как раз и прокатит
100=>101 вот и палиндром
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
05.12.2019, 09:36
ValeryS, на взгляд "вскользь" ошибки в твоей идее не вижу... И она много проще того, что я напридумывал...
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
05.12.2019, 09:48
Байт, есть ошибка и
Цитата Сообщение от ValeryS Посмотреть сообщение
и я её буду думать
вот так может быть
103 по моей идее получится 202
а должно быть 111
взглядом то все понятно, а вот формализировать алгоритм не могу
здесь как нибудь рекурсию бы пришпандорить

пока только наше такое решение, точнее костыль
103 => 202 перебираем все от 103 до 202 не найдется ли еще одного палиндрома
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
05.12.2019, 10:02
ValeryS, может быть надо идти не с краев, а с серединки?
12345 - 12400 - 12420 - 12421
103 - 110 - 111
1234 - 1300 - 1330 - 1331
Как только цифра увеличивается, все, которые правее, сбрасываются в 0
1
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
05.12.2019, 10:12
Байт, может быть
я пока твоей идеи не разумею
Цитата Сообщение от Байт Посмотреть сообщение
12345 - 12400 - 12420 - 12421
можешь по шагам?
почему ты увеличил тройку на четверку?
а если взять число 12320 тут же ничего не надо увеличивать
0
43 / 39 / 5
Регистрация: 16.09.2019
Сообщений: 285
05.12.2019, 10:37
Цитата Сообщение от ValeryS Посмотреть сообщение
для сотки как раз и прокатит
100=>101 вот и палиндром
И опять моя невнимательностььь...
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
05.12.2019, 11:02
Цитата Сообщение от ValeryS Посмотреть сообщение
почему ты увеличил тройку на четверку?
Рассматриваю окружение тройки (в силу нечетности количества цифр ее саму рассматривать не надо, она сама себе палиндром) Имеем 2Х4 Сколько к правому хвосту ни прибавляй, палиндрома не получишь. Пока все цифры вдруг не поменяются (как на спидометре) То есть к левому хвосту (+Х) надо прибавить 1, а правый хвост сбросить в 0
Еще один пример
12945 - 13000 - 13031
После сброса в 0 нужный палиндром делается в одно действие.

Добавлено через 17 минут
ValeryS,
Всетки какие-то мы с тобой туповатые. Все много проще. Пусть n цифр. Рассматриваем A = число, образованное первыми n/2 цифр, B - последними. Зеркалим A - пусть это будет Z. Если Z >= B, просто B заменяем на Z. В противном случае к A (при нечетности присоединяем среднюю цифру) применяем ++. Получившееся A++ зеркалим и приписываем.
1239488
321 < 488 => 1240421
Другой пример: 129988 - 130031
Кому интересно, может реализовать в несложном коде....
2
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
05.12.2019, 12:09
Байт, а 99999
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
05.12.2019, 17:27
Цитата Сообщение от повар1 Посмотреть сообщение
Байт, а 99999
Оно уже прекрасный палиндром.
0
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
05.12.2019, 19:51
Байт, "Мужик ловит такси:
— Куда вам?
— Нет, к удавам я не поеду...
— Нет вы меня не правильно поняли... Куда вам надо?
— Ну раз надо, поехали к удавам."
Я про число N и вашу теорию,а Вы про "прекрасный палиндром". Почти как в анекдоте.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.12.2019, 19:51
Помогаю со студенческими работами здесь

Программа, находящая максимальное число, являющееся палиндромом в строке и заменяющая на него все слова, где есть цифры
Дана строка, написать программу, которая находит максимальное число, являющееся палиндромом (числа отделены пробелами) в строке и заменяет...

Составить программу, которая по заданному слову из набора строит следующее за ним по алфавиту слово
Задано слово (латинскими буквами). Из всех его букв состоят другие слова, возможно и бездумные. Составить программу, которая по заданному...

Дано целое число n. Выведите следующее за ним четное число
Всем доброго времени суток, я начинающий программист) точне записался на курсы и много чего не знаю, нужна ваша помощь, подскажите...

Определить следующее за заданным натуральное число, которое является палиндромом
Дано натуральное число N (1&lt;=N&lt;=10 в степени 100). Палиндром число которое одинаково читается справа налево что слева на право. По даному...

По заданному натуральному числу N определите является ли оно трехзначным
По заданному натуральному числу N определите является ли оно трёхзначным. Формат входных данных Во входном файле input.txt записано...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru