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

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

04.12.2019, 05:43. Показов 4043. Ответов 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
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
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
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,010
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
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
04.12.2019, 20:58
Цитата Сообщение от Байт Посмотреть сообщение
А нельзя ли тупой брут-форс заменить на нечто более осмыленное?
у меня есть мысль и я её буду думать
мысль моя такова, берем первую цифру(самую старшую) и ставим её на место самой младшей
если полученное число меньше то увеличиваем старшую и младшую цифру на 1 заполняя промежуток между ними, если он есть, нулями например 193=> 191=> 202
если полученное число больше или равно то переходим ко второй паре вторая-предпоследняя
и так до окончания
чувствую есть здесь какой-то затык но пока не знаю какой
1
43 / 39 / 5
Регистрация: 16.09.2019
Сообщений: 285
04.12.2019, 23:23
Цитата Сообщение от ValeryS Посмотреть сообщение
чувствую есть здесь какой-то затык но пока не знаю какой
для сотки не прокатит, например...
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
04.12.2019, 23:28
Цитата Сообщение от БедолагаЖека Посмотреть сообщение
для сотки не прокатит, например
для сотки как раз и прокатит
100=>101 вот и палиндром
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
05.12.2019, 09:36
ValeryS, на взгляд "вскользь" ошибки в твоей идее не вижу... И она много проще того, что я напридумывал...
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
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
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru