Member 13015247 Ответов: 2

Почему вывод не coreect для того, чтобы не иметь более 2 цифр?


программа для реверсирования цифр no дает правильный вывод только для двух цифр, но больше двух цифр no вывод не является правильным, почему?

Что я уже пробовал:

#include<stdio.h>
#include<math.h>

int main()
{
    int n,i,r,x=0;

    printf("no of greater than or = two digits/n");
    scanf("%d",&n);

    for(i=1;;)
    {
        if((n/pow(10,i))>=1)
        {
            i++;
        }
        else
        {
            break;
        }
    }

    printf("%d",i);

    for(r=1;r<=i;r++)
    {
        x += ((n % (int)(pow(10, r))) / pow(10, r - 1)) * pow(10, i - r);
    }

    printf("reverse of your number=%d",x);
}

Graeme_Grant

Я исправил форматирование вашего кода, чтобы сделать его читаемым человеком. Кроме того, помогает вам как новичку.

Вы установили точку останова и прошли через код, чтобы увидеть, что он на самом деле делает?

NotPolitcallyCorrect

Вы должны слушать то, что вам говорят люди, а не пытаться изучать программирование по одному вопросу за раз.

2 Ответов

Рейтинг:
2

Patrice T

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
0

OriginalGriff

Это какой-то странный код. Есть гораздо более простое решение, если подумать.
Но это твое домашнее задание, так что я не дам тебе никакого кода!

Подумайте об этом: когда вы переворачиваете число, вы печатаете сначала самую низкую цифру, затем следующую самую низкую и так далее: 1234 становится 4321. И получить наименьшую цифру целого числа легко: модуль числа 10 даст вам это: 1234 % 10 --> 4
Поэтому вместо использования pow просто установите цикл do...while, извлеките нижнюю цифру, распечатайте ее и разделите исходное число на десять. Затем вы используете это число, чтобы вернуться назад по кругу.

1234 % 10 --> 4
1234 / 10 --> 123
Когда вы выходите из цикла? Когда оставшееся число равно нулю.

Простейших!


Garth J Lancaster

"Дурочка!"

как в "простейших!" значит, у вас там, в Великобритании, тоже есть Александр, Сергей, Олег ? (это, вероятно, произошло "там" в любом случае :) )

OriginalGriff

Мне жаль говорить, что мы делаем, да ... и последний, самый раздражающий из них - "хочешь сделать снежного кота?": X