Форум программистов, компьютерный форум CyberForum.ru

Программа, заменяющая английские сокращения слов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не могу понять 2 строки кода функции из методички http://www.cyberforum.ru/cpp-beginners/thread919346.html
Это код добавления элемента в линейный двунаправленный список. Не пойму 12 и 13 строки. Указатель pCurrent->next(указатель на след. элемент списка) всегда будет пустовать, т.к. в конце функции pCurrent=pAdd, а а в строке 13 указателю pAdd->next присваивается pCurrent->next, который так и не заполнился каким-либо адресом. Извините за много букв, надеюсь, понятно объяснил свое непонимание. void...
C++ Работа с видео Здравствуйте, есть такая задача создать видео плеер с функций изменения контраста, плеер создаю использую стандартный компонент windows media player, а вот с контрастом проблема, подскажите плизз может есть какая то библиотека или что то еще http://www.cyberforum.ru/cpp-beginners/thread919341.html
C++ Как вызвать конструктор для неизвестного объекта?
Добрый вечер. Помогите мне с задачей. Хочу написать шаблонный класс вектор. И в конструкторе по умолчанию нужно прописать конструкцию вызова того конструктора, объекты которого будет хранить это вектор. Как вызвать конструктор для неизвестного объекта? template<typename T> class TCVector { public: TCVector(unsigned int size=0);
Можно ли еще сократить код? C++
Есть программа, которая должна считать данные из файла input.txt и записать ответ в фаил output.txt. Программа должна сложить 2 числа не превосходящих 10^9. Можно ли еще уменьшить код?? #include <fstream> long a,b; main() { std::ifstream cin("input.txt"); std::ofstream cout("output.txt"); cin>>a>>b; cout<<a+b; }
C++ Перевод кода с Java http://www.cyberforum.ru/cpp-beginners/thread919294.html
Здравствуйте! Есть кусок кода на java, в котором идет работа с map, пробовал переписать самостоятельно, но ничего хорошего из этого не вышло, вот что нужно перевести: int n = Integer.parseInt(reader.readLine()); String s = reader.readLine(); HashMap<Integer, Integer> starts = new HashMap<>(); starts.put(0, 0); int counter = 0; int max = 0;
C++ Как сделать постраничное отображение в консоли Например открываем текст из файла а его больше чем может вместьтс в консоль,нам приходится прокручивать бегунок чтоб посмотреть другую часть текста. А как сделать так чтоб чтоб как страницы в книге на экране консоле столько текста всё остольное что не вошло на следуюшей странице.(нажал кнопку "вниз" или "влево" и перещол на следующую страницу. Никак немогу даже в голове это придумать.:-| подробнее

Показать сообщение отдельно
strange_man
 Аватар для strange_man
9 / 9 / 0
Регистрация: 17.05.2012
Сообщений: 117
07.07.2013, 22:39     Программа, заменяющая английские сокращения слов
Программа должна заменять слова с сокращениями (don't, can't, won't, haven't, it's и т.д.) на их полные альтернативы (do not, cannot, will not и т.д.).
Также нужно обработать текстовый файл, из которого создать словарь со всеми словами в алфавитном порядке. То есть в него попадут не слова don't и пр. а слова do и not.

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void edit(string& line) //эта функция не проработана. она выделяет только сокращения с ..n't
{
    string word = "";
    int l = line.size();
 
    if (l >= 3 && (line[l-3] == 'n') && (line[l-2] == '\'') && (line[l-1] == 't'))
        l -= 3;
    
    for (int i = 0; i < l; i++)
        if (!(is_whitespace(line[i]) || isdigit(line[i]))) word = word + line[i];
 
    if (l != line.size()) 
        word = word + " not";
 
    line = word;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void execute(string& st)
{
    tolower(st); //привожу к нижнему регистру
    istringstream iss(st); 
    string word;
    ostringstream oss;
 
    while (iss >> word) 
    {
        edit(word); //слово отредактируется, если это потребуется (превратится в строку из двух слов)
        oss << word << " "; //заношу в строковый поток
    }
 
    st = oss.str(); //у нас новая строка. значит, я изменяю строку-аргумент
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
int main()
try
{
    setlocale(LC_ALL,"Russian");
    string input = "text.txt";
    string print = "new.txt";
    ifstream ifs(input.c_str());
    if (!ifs) error ("Unable to open input file ", input);
    ofstream ofs(print.c_str());
    if (!ofs) error ("Unable to open output file ", print);
 
    vector<string> vs;
    string st;
 
    while (getline(ifs,st)) //считываю строку из файла
    {
        execute(st); //обрабатываю строчку
        istringstream iss(st);
        string word;
        while (iss >> word) //считываю из обработанной строки слова и добавляю в вектор
            vs.push_back(word);
    }
 
    sort(vs.begin(), vs.end()); //сортировка
    
    for (int i = 0; i < vs.size(); i++)
        if (i == 0 || (vs[i] != vs[i-1])) ofs << vs[i] << endl; //вывожу неодинаковые слова в новый файл
 
    keep_window_open();
    return 0;
}
catch(exception& e)
{
    cerr << "Error:" << e.what() << "\n";
    keep_window_open();
    return 1;
}
catch(...)
{
    cerr << "Oops: uknown exception\n";
    keep_window_open();
    return 2;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru