моя программа кажется правильной, но я не знаю, почему у нее есть логическая проблема
int main()
{
int r,s=0;
for(int i=10000;i<=998001;i++)
{
while (i>0)
{
r=i%10;
s=s*10+r;
i=i/10;
}
cout<<s<<endl;
}
Небольшой резиновая утка отладка должен иметь большое значение.
@ Какой-то чувак-программист <g>
Вы должны сбрасывать s=0 для каждого нового i и вводить anewvariable = i, как предлагает kingW3
В некоторых случаях лист бумаги может заменить утку: рассмотрите два последовательных i и внимательно запишите результаты того, что делает программа.
@ali, вы хотите получить все числа, которые являются палиндромами в этом диапазоне?
Это не способ относиться к новичкам, я думаю, людям не следует рассматривать вопрос через его заголовок.
Мне жаль. Но я не понял тебя @nafeesahmed.
о, братан, извини, я не говорил о тебе.
его вопрос получил оценку -4.





Ваш вопрос и код не соответствуют Али. Вы сказали, что вам нужен максимально большой палиндром, но вы печатаете каждое перевернутое число. И в вашем коде тоже есть глюки. Я перечислю ошибки и соответствующие изменения, которые необходимо внести:
i как переменную счетчика цикла for, так и число, которое вы меняете. Это приводит к тому, что i становится 0 после каждого реверсирования, и, следовательно, цикл for никогда не заканчивается. Исправление для этого ... используйте другую переменную, скажем, num, и приравняйте ее к i в начале цикла. Это гарантирует, что i останется неизменным, а for останется неизменным.long int вместо int. Это позволяет избежать каких-либо аномалий и вероятности появления нежелательных чисел.s (переменная суммы) инициализируется только при запуске. Следовательно, каждый раз, когда вы вычисляете новое обратное число, он добавляет s к своему предыдущему значению. Исправление: Инициализируйте s как 0 в начале цикла for, чтобы вы получали новое реверсирование для каждого значения i.i, обратному числу, то есть sЯ прикрепил код ниже. В настоящее время я печатаю величайший палиндром из того диапазона, в котором вы проверяли. Если вам нужны все палиндромы, просто раскомментируйте закомментированную строку cout.
КОД:
#include <iostream>
using namespace std;
int main()
{
int r, s = 0;
long int num, max = 0;
for(long int i = 10000; i <= 998001; i++)
{
s = 0;
num = i;
while (num > 0)
{
r = num % 10;
s = s * 10 + r;
num = num / 10;
}
if (s == i) {
//cout<<s<<endl; //uncomment this line if you intend to display all palindromes
if (i > max)
max = i;
}
}
cout<<max<<endl;
}
спасибо за вашу помощь, эта проблема - один из проектов Эйлера, и когда я пишу результат, показываемый программой, сайт сказал, что этот ответ неверен (997799)
@ali, ты можешь мне помочь? Указанный вами диапазон ... на чем он основан? или это произвольный диапазон?
Вы меняете i, и ваш цикл возвращается к 0 каждый раз.