Няшная / Говнокод #29073 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
/* Python:

def A004086(n):
return int(str(n)[::-1])
*/

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

int A004086(int n) {
    char str[12]; // Enough to hold the string representation of an int
    sprintf(str, "%d", n);
    int len = strlen(str);
    char reversed[12];
    
    for (int i = 0; i < len; i++) {
        reversed[i] = str[len - 1 - i];
    }
    reversed[len] = '\0'; // Null-terminate the string
    
    return atoi(reversed);
}

Результат переписывание с "Python" на "C". A004086 это последовательность из OEIS https://oeis.org/A004086

Запостил: j123123 j123123, (Updated )

Комментарии (22) RSS

  • Анскильно это. Надо расхреначить число на отдельные цифры через цикл через взятие остатка от деления на 10 и потом обратным ходом состыковывать через цикл, умножая питушню на 10

    int A004086(int n)
    {
      char str[12];
      int i = 0;
      while (n > 0)
      {
        str[i] = n % 10;
        n /= 10;
        i++;
      }
    
      int len = i;
      while (i != 0)
      {
        n *= 10;
        n += str[len-i];
        i--;
      } 
      return n;
    }


    Нейросетевая переписывалка вот тут, если что: https://www.codeconvert.ai/python-to-c-converter
    Ответить
    • А вот если с Си это на питон переписать, то:
      def A004086(n):
          str_digits = []
          i = 0
          while n > 0:
              str_digits.append(n % 10)
              n //= 10
              i += 1
      
          length = i
          while i != 0:
              n *= 10
              n += str_digits[length - i]
              i -= 1
          return n
      Ответить
    • Но и это конечно хуита.
      Тут вообще без буфера можно обойтись

      Сначала узнаем количество знаков в числе (можно через кучку ифов или еще каким-то образом), потом в цикле тупо от числа откусываем по цифре с головы через "деление" и "остаток от деления", и напихиваем его в другое число, умножая на 1, 10, 100 и так далее
      Ответить
      • Думаю, проще откусывать младший разряд (с хвоста), чтобы ни длину не считать, ни множитель не увеличивать.
        int A004086(int n) {
          int k = 0;
          while (n) {
            k *= 10;
            k += n % 10;
            n /= 10;
          }
          return k;
        }
        Ответить
          • Да. Сегодня же последний день каникул (((
            Ответить
            • 1024 на форуме с 2009-го года. Он на семнадцатый год в пятом классе остался?
              Ответить
              • Может он мучитель информатики?



                Что-то у меня стало дохуя индусской крапчи с буквально свисающими с мотоцикла босыми грязными ногами...
                Ответить
  • > char str[12]; // Enough to hold the string representation of an int

    Это хуйня конечно
    Ответить
    • Кстати, а зачем тут вообще чар? цифр всего десять, а не 255.
      Ответить
      • У меня в Си нет типа, который бы принимал значения от 0 до 9
        Ответить
        • На одну цифру нужно 4 бита, в байте их восемь. Получается, что чаром можно закодировать две цифры
          Ответить
          • Упакованный BCD называется (неупакованный, когда в байте одна цифра).

            Сишкобляди соснули, да, и ещё много ЯП соснуло, ибо почти нигде нету такого типа.

            Между тем плавпитух нативно поддерживает некоторые типы упакованных многоразрядных BCD.
            Ответить
            • Я боюсь, что тут процессоры соснули, потому что работать с такой хуйней будет не очень перформансно, примерно как тыкву с база домой на боинге перевозить
              Ответить

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

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8