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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vlados92
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28
#1

Подправте код проги, С++ - C++

23.02.2011, 13:22. Просмотров 434. Ответов 3
Метки нет (Все метки)

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


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
#include <iostream>
#include <fstream>
 
#include <vector>
 
using namespace std;
 
int first_word_len(const string& s) {
    return (s.substr(s.find_first_not_of(' ')).find(' ') == 1) ? 1 : 0;
}
 
bool is_letter(const string& s1, const string& s2) {
    return first_word_len(s1) > first_word_len(s2);
}
 
int main() {
    fstream in_file("data.txt", ios::in);
 
    string buffer;
    vector<string> storage;
 
    while(getline(in_file, buffer, '\n')) {
        storage.push_back(buffer);
    }
    in_file.close();
 
    sort(storage.begin(), storage.end(), is_letter);
 
    for(vector<string>::iterator i = storage.begin(); i < storage.end(); i++) {
        cout << *i << endl;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2011, 13:22     Подправте код проги, С++
Посмотрите здесь:

C++ Написать проги на C
проги на С++ C++
C++ Подправте пожалуйста код
C++ проги по структурам на С++
C++ Подправте код...
C++ Переписать маленький код проги на старый борланд
C++ Перевод проги из С++ в С
Перейти в конец проги C++
C++ ...нужны..проги
C++ Подправте, пожалуйста, ошибки линкера (MVS2008) !
C++ Проги
C++ проги в С++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1600 / 1228 / 121
Регистрация: 21.12.2010
Сообщений: 1,875
Записей в блоге: 7
23.02.2011, 17:22     Подправте код проги, С++ #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <fstream>
#include <vector>
#include <sstream>
using namespace std;
 
int main() {
    fstream in_file("text.txt", ios::in);
    string buffer, tmp;
    vector<string> storage;
    stringstream ss;
    while(getline(in_file, buffer, '.')) {
        ss.str(buffer);
        ss>>tmp;
        ss.clear();
        if(tmp.size()==1) cout<<buffer<<".\n";
        else storage.push_back(buffer);
    }
    in_file.close();
    for(vector<string>::iterator i = storage.begin(); i < storage.end(); i++) {
        cout<<*i<<".\n";
    }
}
vlados92
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28
23.02.2011, 19:59  [ТС]     Подправте код проги, С++ #3
Выдаёт ошибку C:\Users\Влад\Desktop\111\Debug\111.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
Yellow2815
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 12
03.06.2011, 12:33     Подправте код проги, С++ #4
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
#include <fstream.h>
#include <string.h>
 
int main()
{
    ifstream fin("test.txt", ios::in | ios::nocreate);
    if (!fin) {cout<<"ERROR! "<<endl; return 1;}
    
    fin.seekg(0, ios::end);
    long len = fin.tellg();
    char *buf = new char [len+1];
    char *ost = new char [len+1];
    fin.seekg(0, ios::beg);
    fin.read(buf, len);
    buf[len] = '\0';
    ost[len] = '\0';
    long n=0, i=0, j=0, o=0, f=0;
    while(buf[i]) {
        if( buf[i] == '?' || buf[i] == '.'||buf[i] == '!') {
            if (buf[n+2]==' ') {
                for (j=n;j<i+1;j++) {f++; cout <<buf[j];}
                    n=i+1;}
             else { 
                                for(j=n;j<i+1;j++) {ost[o]=buf[j];o++;}
                    n=i+1;}
                        }
        i++; 
    }
        long lon=len-f;
    cout<< endl;
    for (j=0;j<lon;j++) cout <<ost[j];
    fin.close();
    cout << endl;
    return 0;
}
Всё работает, вывод правильный за исключением одного: после вывода всего текста появляются лишние символы вида" =======================***** ".
Я понял, что это дело записано в ost, как сделать, чтобы вывод был правильный, для любого количества слов в тексте(важно! так как для определённого текста можно подобрать f так, что вывод будет верный)
Yandex
Объявления
03.06.2011, 12:33     Подправте код проги, С++
Ответ Создать тему
Опции темы

Текущее время: 17:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru