Перевод Кода С++ В С

Тема в разделе "Общие вопросы по С и С++", создана пользователем Sotona-13, 19 апр 2013.

  1. Sotona-13

    Sotona-13 New Member

    Регистрация:
    19 апр 2013
    Сообщения:
    1
    Симпатии:
    0
    #include <iostream>
    #include <string>
    #include <algorithm>
    #include <vector>
    #include <map>
    #include <stdint.h>


    void GetLargestCommonSubstring(string & result, const string & a, const string & ;)
    {
    const int a_size = a.size();
    const int b_size = b.size();

    typedef vector<int> solution;

    const int solution_size = b_size + 1;
    solution x(solution_size, 0), y(solution_size);

    solution * previous = &x;
    solution * current = &y;

    int max_length = 0;
    int result_index = 0;

    for(int i = a_size - 1; i >= 0; —i) {
    for(int j = b_size - 1; j >= 0; —j) {
    int & current_match = (*current)[j];
    if(a != b[j]) {
    current_match = 0;
    }
    else {
    const int length = 1 + (*previous)[j + 1];
    if (length > max_length) {
    max_length = length;
    result_index = i;
    }

    current_match = length;
    }
    }

    swap(previous, current);
    }

    result = a.substr(result_index, max_length);
    }

    typedef map<char, uint8_t> ValidChars;

    void extend(ValidChars & valid, string & s)
    {
    for (auto i = s.begin(); i != s.end(); ++valid[*i++]);
    }

    void filter(ValidChars & valid, string & s)
    {
    s.erase(remove_if(s.begin(), s.end(), [&](char c) -> bool { return !valid.count&copy;; }), s.end());
    }

    int main(int argc, char** argv)
    {

    string x, y, z;

    printf « "Enter x: ";
    scanf » x;
    printf « "Enter y: ";
    scanf » y;

    ValidChars valid;

    extend(valid, x);
    extend(valid, y);

    for (auto i = valid.begin(); i != valid.end(); i->second > 1 ? ++i : valid.erase(i++));

    filter(valid, x);
    filter(valid, y);

    GetLargestCommonSubstring(z, x, y);

    printf « "z: " « z « endl;

    return 0;
    }


    Дано вот такое чудовище,кое-что я в С переписал,на остальное не хъватает мозгов
    Кодпад выдает вот такое
    http://codepad.org/HUxsBuhx

    Кто-то может помочь с этим?
    Желательно срочно

    З.Ы. Не спрашивайте,зачем мне именно С,спросите преподавателя младшего брата ;)
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    printf - функция, для нее не перегружен оператор <<, посмотри примеры ее использования

    убери лишние инклуды, для этого не нужны мозги

    Си ничего не слышал про авто, и про итераторы тоже

    строки заменяй на массивы символов, вектора - на массивы, словарь на массив структур и определяй операции над ним.

    Есть версия, что проще написать с нуля на Си чем переписать с плюсов )
     
Загрузка...

Поделиться этой страницей