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

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

Восстановить пароль Регистрация
 
vlados92
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 28
23.02.2011, 13:22     Подправте код проги, С++ #1
Написать программу, которая считывает текст из файла и выводит на экран сначала предложения, начинающиеся с однобуквенных слов, а затем все остальные.


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++ Переписать маленький код проги на старый борланд
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 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     Подправте код проги, С++
Ответ Создать тему
Опции темы

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