Кресты / Говнокод #27088 Ссылка на оригинал

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
void two(string str, int *mstr,int l)    //Замена цифр в строке
{
    string base[10] = { "ноль","один","два","три","четыре","пять","шесть","семь","восемь","девять" };    //Строки для замены
    int i,j,t;

    for (i = 0;i < l;i++)
    {
        str.insert(mstr[i]+1, base[atoi(&str[mstr[i]])]);    //Вставка после числа в строку
        t = base[atoi(&str[mstr[i]])].length();        //Смещение последующих чисел в строке
        str.erase(mstr[i], 1);        //Удаление цифры в строке

        for (j = i; j < l;j++)        //Новые позиции чисел в строке
        {
            mstr[j] += t-1;
        }

    }

    cout << "Изменённая строка: " << str << endl;
}

По заданию требовалось обработать символьную строку так, чтобы цифры записывались числительными. В этой функции идет замена цифр в строке. Массив str - строка символов, mstr - int массив, куда записывается позиция числа в строке (т.е в строке aaaa1aaa mstr[0]=4), а l - количество чисел в строке.
Код не мой. Это ад. Неработающий.
Сидел, ржал.

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

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

  • Я тебя услышал. Теперь смотрим, как это делается на языке для белых:
    $string = str_replace(["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"], ["ноль","один","два","три","четыре","пять","шесть","семь","восемь","девять"], $number);
    Ответить
    • Я хочу, чтобы двое уёбищ, поставивших мне по минусу, объяснились за свои действия.
      Ответить
  • > atoi

    Если там 2 цифры подряд, к примеру "11", то atoi вернёт 11 и будет вылет за границу массива base. Не надо так.

    Можно просто base[str[mstr[i]] - '0'] раз мы уже знаем что там цифра
    Ответить
    • У него единственный рабочий тест на числа рядом - 000 по понятным причинам.
      Ответить
      • Переходи на PHP. У нас всё проще, без мозгоёбки.
        Вообще не понимаю тех, кто упорно сидит на C/C++ - откровенно НЕДОРАБОТАННОМ языке.
        Ответить
          • Окончишь ты ВУЗ по специальности "сиплюсплюсник", и куда дальше с таким БАХАЖОМ знаний?
            Ответить
            • У меня ИВТ специальность, а не плюсник. Имхо, главное понимать алгоритм, а на него можно любой язык наплести, хоть brainfuck, хотя не отрицаю, что знать особенности языка, например функцию str_replace, через которую вы лаконично функцию сделали, бывает полезно. Тем более изучение "языка" в вузе происходит по большей части в полу-самостоятельном виде и ничто не мешает изучить другой язык самому, если есть желание.
              Ответить
              • ты же понимаешь, что не стоит слишком серьезно относиться к словам человека с ником "ротоёб"?
                Ответить
                • Да понимаю, просто привычка любым ротоебам отвечать с натянутой вежливостью, даже если они откровенно байтят. На плюсах, кстати, тоже есть функция str_replace, правда не совсем так, как на пхп работает, пойду документацию почитаю лучше.
                  Ответить
                  • Нету там такой, к сожалению 🙁

                    Там только по координатам замена, емнип.
                    Ответить
              • > У меня ИВТ специальность, а не плюсник.

                А что, разве бывает специальность "программист на C++" ? Это ж примерно как специальность "откручиватель гаек".
                Ответить
                • я думал что с++ такой сложный что на него нужно высшее образование получать
                  Ответить
                  • единственная причина почему не вручают нобелевскую причину за программы на нем это то что комитет просто еще не дорос его понимать
                    Ответить
                  • Угу, причем желательно три
                    * по языку
                    * по шаблонам
                    * по изучению стандарта.
                    Ответить
                    • И чтоб отдельные спецкурсы по разгребанию шаблоноговна вперемешку с сишным препроцессором, нахождение там багов. Экзамен на понимание ошибки от компилятора, когда он высирает эту ошибку на тыщу строк.
                      Ответить
                      • и только пхпшник, генерирующий JavaScript с помощью PHP может их понять
                        Ответить
                • Ну вот Сёма получил образование по специальности "делатель веб сайтов на питоне", хз как это по немецки будет
                  Ответить
            • Долго еще, пока только второй курс недообразования, лаба вообще должника за второй семестр
              Ответить
              • Уныло, должно быть, сидеть над языком с затхлым амбре восьмидесятых, на котором невозможно с первого же дня начать разработку, который сначала надо учить, учить и учить, долго и муторно? Помню, PHP учить не пришлось вообще - сходу начинаешь разрабатывать проект, лишь периодически заглядывая в документацию, и течёшь от наслаждения.
                Ответить
        • были, но разве это важно?
          нельзя завязываться
          Ответить
  • сложно
    я за

    std::string data("12345100500"), result, base[] = { "ноль","один","два","три","четыре","пять","шесть","семь","восемь","девять" };
        char str[2]{};
    
        for(std::string::const_iterator it = data.begin(); it != data.end(); ++it) {
            str[0] = *it;
            result += base[atoi(str)];
        }
        std::cout << result;
    Ответить
    • Более удобоваримо для прочтения, но строк всё равно дохуища для такой плёвой функции. Поэтому я за PHP.
      Ответить

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

Где здесь C++, guest?!

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


    8