2017-01-02 10 views
0

Является ли это формулой для обратного номера?Алгоритм обратный номер

eg 123-321?

Номер является K

и K = K% 100 + K/10% 10 * 10 + K% 10 * 100

Я не уверен, что я точно написал, и мне нужно это право задача в школе графического алгоритма

Edit: Да я глупое XD Я Новичок XD

+0

Я бы отделил вычисления больше, чтобы упростить их выполнение, например 'units = K% 10; tens = ...; сотни = ...; ', а затем, когда цифры все раздельные, объедините их снова' inv = 100 * единиц + 10 * десятки + сотни; '. –

+0

Вы не очень поняли, что вы просите. Является ли '123-321' строкой, которую вы получаете, и нужно проверить, что это палиндром? из вас вы получаете '123' и должны вернуть' 321'? Будут ли цифры, которые вы получаете, всегда 3 цифры? – AntonH

+0

Мне не нужно это, чтобы написать программу, но я бы нарисовал алгоритм для 3 цифр. Это хороший способ или нет? мой английский сосать извините xD –

ответ

3

Эта логика поможет вам. переменным обратным является выход.

 int num = 123; 
     double inverse = 0; 
     while (num != 0) 
     { 
      inverse = inverse * 10; 
      inverse = inverse + num % 10; 
      num = num/10;     
     } 
+2

Почему тип 'inverse' является' double' вместо 'int'? –

+0

Спасибо, г-н Дж. Пикард за ваш комментарий ... Это должно быть int. Но нет проблемы с двойным. –

0
#include <stdio.h> 
#include <stdlib.h> 

int main(void) { 
    int i = 123045 , j = 0,k=0; 

    while(i != 0) 
     { 
     j=i%10; 
     k = k *10 + j; 
     i /=10; 
    } 

    printf("%d\n", k); 
    return 0; 
} 

Выход 540321

+0

На каждой итерации цикла while 'i% 10' будет извлекаться первая цифра справа. Эта цифра переносится на 'k' на' j', и мы удаляем цифру из 'i', используя целочисленное деление. – Amjad

+2

Это не будет работать для числа, содержащего нуль, например. 12305, условие завершения является неправильным. – axalis

+0

Модифицировано; Спасибо, что подняли это! – Amjad

1

Если вы хотите, чтобы ваш код для работы с любым числом, рассмотреть вопрос о преобразовании в строку, а затем обратить вспять его!

int invert(int input) 
{ 
    std::stringstream str; 
    str << input; 

    std::string s = str.str(); 
    std::reverse(s.begin(),s.end()); 

    return atoi(s.c_str()); 
} 
+0

Я бы предпочел сделать это прямо в integer, вместо того, чтобы делать ненужные преобразования в/из строки (включая распределение динамической памяти btw.). – axalis