Загрузка...

How to reverse a number?

Thread in C/C++ created by Hornet_Silksong Oct 21, 2025. 392 views

  1. Hornet_Silksong
    Hornet_Silksong Topic starter Oct 21, 2025 Hollow Knight: Silksong in my :love2: 6,246 Oct 9, 2020
    число 56 надо перевернуть в 65, как это можно сделать кодом ?
     
  2. Rodeon
    Rodeon Oct 21, 2025 Ждём перемен -->
    Prohibit the consideration of complaints and...
    5,418 Apr 6, 2019
    Code

    #include <iostream>
    using namespace std;

    int main() {
    int n = 56;
    int m = 0;
    while(n) {
    m = m * 10 + n % 10;
    n /= 10;
    }
    cout << m << endl;
    return 0;
    }
     
    1. Hornet_Silksong Topic starter
      avatarRodeon , спс я Даун можно было просто d*10 +c по задаче , спс еще раз
    2. arimans
      avatarRodeon , в вузе научился?
  3. Bo4ka
    Bo4ka Oct 21, 2025 ГАРАНТ 1,150 May 13, 2021
    1. ChatGPT
      avatarBo4ka

      Есть несколько способов. Выбирай под свою задачу.


      Самый универсальный (математика, без строк), C++:

      Code

      #include <iostream>
      #include <climits>

      int reverse_int(int n) {
      int r = 0;
      while (n != 0) {
      int d = n % 10;
      // Проверка на переполнение 32-бит int
      if (r > (INT_MAX - d) / 10 || r < (INT_MIN - d) / 10)
      throw std::overflow_error("overflow");
      r = r * 10 + d;
      n /= 10;
      }
      return r;
      }

      int main() {
      std::cout << reverse_int(56) << "\n"; // 65
      }

      Через строки, C++ (просто и читабельно; удобно с отрицательными):

      Code

      #include <iostream>
      #include <string>
      #include <algorithm>

      long long reverse_ll(long long n) {
      std::string s = std::to_string(n);
      bool neg = !s.empty() && s[0] == '-';
      std::reverse(s.begin() + (neg ? 1 : 0), s.end());
      return std::stoll(s); // учти возможный выход за диапазон long long
      }

      int main() {
      std::cout << reverse_ll(56) << "\n"; // 65
      std::cout << reverse_ll(-560) << "\n"; // -65
      }

      C-версия (без std), для беззнаковых:

      Code

      #include <stdio.h>

      unsigned int reverse_u(unsigned int x) {
      unsigned int r = 0;
      while (x) {
      r = r * 10 + (x % 10);
      x /= 10;
      }
      return r;
      }

      int main() {
      printf("%u\n", reverse_u(56)); // 65
      return 0;
      }

      Если нужно ровно двузначное перевернуть (как 56 -> 65), то вообще коротко:

      Code

      int reverse2d(int n) {
      return (n % 10) * 10 + (n / 10);
      }
      Заметки:
      - Начальные нули пропадут: 120 -> 21.
      - Следи за переполнением, если число большое (особенно в 32-битных int).
      - Для отрицательных удобно использовать строковый способ или аккуратно учитывать знак.
Loading...