24
Сен
2021

Поменять соседние цифры числа местами

Сейчас разбираюсь вот с каким заданием (краткий пересказ):

На вход дано целое число n. Преобразуйте его таким образом, чтобы две соседние цифры числа были поменяны местами.

То есть, у нас есть целое число n = 123456, его необходимо преобразовать в число 214365.

Вот мой код на C (код рабочий). Хотелось бы услышать критику со стороны насчет его эффективности. Что бы вы улучшили или предложили изменить? Потому что мне его надо будет сдать, а принимающий достаточно строгий)

#include <stdio.h>

int rewrite(int n) {
    
    int var_1, var_2;
    int n_new = 0;
    
    while (n >= 10) {     //Ставим условие >= 10 по причине того,
                          //что надо var_1 и var_2 присвоить по цифре
        var_1 = n % 10;   //То есть надо иметь в запасе как минимум десяток
        n /= 10;
        var_2 = n % 10;
        n /= 10;
        
        n_new *= 10;    //Записываем n_new таким образом, чтобы
        n_new += var_2; //соседние цифры были поменяны местами
        n_new *= 10;      
        n_new += var_1;
        
    }
    
    while (n_new != 0) { //Мы записывали число n_new при этом делили
                         //число n с конца, следовательно, его надо перевернуть
        n *= 10;
        n += n_new % 10;
        n_new /= 10;
        
    }
    
    return n;

}

int main() {
    
    int n;
    
    printf("Пожалуйста, введите число n: ");
    scanf("%d", &n);
    
    printf("Обработанное число: %d\n", rewrite(n));
    
    return 0;  }

Источник: https://ru.stackoverflow.com/questions/1331610/%D0%9F%D0%BE%D0%BC%D0%B5%D0%BD%D1%8F%D1%82%D1%8C-%D1%81%D0%BE%D1%81%D0%B5%D0%B4%D0%BD%D0%B8%D0%B5-%D1%86%D0%B8%D1%84%D1%80%D1%8B-%D1%87%D0%B8%D1%81%D0%BB%D0%B0-%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D0%BC%D0%B8

Тебе может это понравится...

Добавить комментарий