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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Vlad_1024
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 19
#1

Создать список из слов файла - C++

15.04.2013, 23:02. Просмотров 1401. Ответов 19
Метки нет (Все метки)

Подскажите пожалуйста как написать программу, которая считывает текст по словам из файла и создаёт из него список.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2013, 23:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать список из слов файла (C++):

Создать список слов из файла и подсчитать количество повторения этих слов - C++
Здравствуйте. Помогите написать такую программу: в файле храниться текст. Нужно составить список слов из этого текста и посчитать частоту...

Создать список из слов. Подсчитать количество слов, совпадающих с последним словом - C++
создать список из слов. подсчитать количество слов, совпадающих с последним словом. Удалить все таки слова, оставив одно последнее.

Стек: создать список из слов, подсчитать количество слов, совпадающих с последним словом - C++
Создать список из слов. подсчитать количество слов, совпадающих с последним словом. Удалить все таки слова, оставив одно последнее. ...

Связанный список. Создать, записать в связный список последовательность слов,обозначающих месяцы года,заданных пользователем - C++
Создать связанный список.Кроме информационных полей он должен обязательно содержать указатели на предыдущий и следующий за ним...

Список слов из закодированого файла - C++
Простое задание, но не для меня :( Есть несколько файлов с кодировкой UTF8, программа должна создать новый файл и сохранить в него список...

Составить линейный односвязный список неповторяющихся слов из файла - C++
Написать программу, составляющую по символьному файлу линейный упорядоченный список неповторяющихся слов и вывести его. struct List ...

19
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
15.04.2013, 23:17 #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
24
25
26
27
#include <iostream>
#include <fstream>
#include <list>
#include <iterator>
#include <algorithm>
#include <string>
#include <cstdlib>
 
typedef std::istream_iterator<std::string> ii;
typedef std::ostream_iterator<std::string> oi;
 
int main()
{
    std::string file_name;
    std::cout << "Input: ";
    std::cin >> file_name;
    std::ifstream in(file_name.c_str(), std::ios::in);
    if (!in)
    {
        std::cerr << "error: couldn't open file.\n";
        exit(1);
    }
    std::list<std::string> words_list((ii(in)), ii());
    std::copy(words_list.begin(), words_list.end(), oi(std::cout, "\n"));
 
    in.close();
}
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
15.04.2013, 23:27 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Vlad_1024, или так

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 <iostream>
#include <algorithm>
#include <iterator>
#include <list>
#include <fstream>
#include <string>
using namespace std;
 
template <typename T>
void addToList(list<T> &_coll, T _word){
    _coll.push_front(_word);
}
 
template <typename T>
void showList(list<T> &_coll){
    copy(_coll.begin(), _coll.end(), ostream_iterator<T>(cout, "\n"));
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    string word;
    list<string> coll;
    ifstream fin("input.txt", ios::in);
 
    while(!fin.eof()){
        fin >> word;
        addToList(coll, word);
    }
 
    cout << "List:\n";
    showList(coll);
 
    cout << "\n\n";
    return 0;
}
0
Vlad_1024
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 19
16.04.2013, 01:02  [ТС] #4
xtorne21st
Спасибо большое!!!!!!!!!!!!!!!!!!!!!!!!!

Добавлено через 34 минуты
yoghurt92
видает ошибку в строке 19 что сделать

Добавлено через 1 минуту
и пацаны можно както проще это все как для 1-го курса ))?

Добавлено через 35 минут
yoghurt92, видает ошибку в строке 19 что сделать?
0
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
16.04.2013, 01:05 #5
замените строку на просто int main()
0
Vlad_1024
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 19
16.04.2013, 08:40  [ТС] #6
xtorne21st, всеромно не пашет (((
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
16.04.2013, 08:53 #7
Vlad_1024, вот так можно в ручную

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
44
45
46
47
48
49
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
struct ListNode{
    string data;
    ListNode *next;
};
 
template <typename T>
ListNode *addToFront(ListNode *Head, const T value)                 
{
    ListNode *Ptr = new ListNode;
    Ptr -> data = value;
 
    Ptr -> next = Head;
    Head = Ptr;
 
    return Head;
}
 
void showList(ListNode *Head)                 
{
    ListNode *tmp = Head;
 
    while(tmp != NULL){
        cout << tmp -> data << endl;
        tmp = tmp -> next;
    }
}
 
int main()
{
    string word;
    ListNode *Head(NULL);
    ifstream fin("input.txt", ios::in);
 
    while(!fin.eof()){
        fin >> word;
        Head = addToFront(Head, word);
    }
 
    cout << "List:\n";
    showList(Head);
 
    cout << "\n\n";
    return 0;
}
0
Vlad_1024
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 19
16.04.2013, 14:56  [ТС] #8
yoghurt92, Спс все работает просто на ура ))) спасибо большое ))
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
16.04.2013, 15:02 #9
Vlad_1024, я забыл, допишите в конец программы

C++
1
fin.close();
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.04.2013, 19:39 #10
Ага, попробуйте записать в файл что-то вроде:
Код
 .  .,1.!./,  ,sd;sdlpa. .df af.adf;w ef9e f    
4 EE5.G
5T .5Y W45Y56.YW4.Y 
4.Y. .S4
6Y WT.GR G. EF.34T.34TE RG ..Y 45G
ETRT
И вряд ли он хоть одно слово (последовательность букв и/или цифр) запишет.

Добавлено через 6 минут
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
#include <iostream>
#include <fstream>
#include <string>
int main()
{
    std::string str;
    std::ifstream in("1.txt");
    while(!in.eof())
    {
        const char* tokens = ". ;,!?/";
        std::getline(in, str);
        str.erase(0, str.find_first_not_of(tokens));
        size_t beginPos = str.find_first_of(tokens);
        size_t nextPos = str.find_first_of(tokens, beginPos + 1);
        if (beginPos != std::string::npos && beginPos > 0)
            std::cout << str.substr(0, beginPos) << '\n';
        else
            std::cout << str << '\n';
        while(beginPos != std::string::npos)
        {
            if (nextPos == std::string::npos)
            {
                size_t poss = str.find_last_of(tokens);
                if(poss != std::string::npos && poss + 1 != str.size())
                std::cout << str.substr(beginPos + 1, str.size() - beginPos) << '\n';
                break;
            }
            std::string substrWord = str.substr(beginPos + 1, nextPos - beginPos - 1);
            if (substrWord.size())
                std::cout << substrWord << '\n';
            beginPos = str.find_first_of(tokens, nextPos);
            nextPos = str.find_first_of(tokens, beginPos + 1);
        }
    }
    system("pause");
    return 0;
}
Так должен считывать.
1
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
16.04.2013, 19:49 #11
BumerangSP, вывело, но не в правильном порядке, а с чем это связано?
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.04.2013, 19:55 #12
Вот мой вывод:
Создать список из слов файла
А в каком таком "неправильном"?)
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
16.04.2013, 20:00 #13
BumerangSP, ну у меня вывелось содержимое, правда порядок следование символов был изменен... с чем связано такое поведение?
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.04.2013, 20:18 #14
yoghurt92, понятно, что он изменен. Можно сюда скрин вывода?
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
16.04.2013, 20:23 #15
BumerangSP,
0
Миниатюры
Создать список из слов файла  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2013, 20:23
Привет! Вот еще темы с ответами:

Создать частотный словарь слов текста из файла - C++
Вывести алфавитный список всех слов заданного текста с указанием количества вхождений слова в текст. Предусмотреть считывание текста для...

Создать список целых чисел. Создать новый список, записав в него отрицательные элементы - C++
Создать список целых чисел. Создать новый список, записав в него отрицательные элементы.(задачу нужно решить 3-мя способами- стек, очередь,...

Необходимо создать связной список с записью в файл и восстановлением из файла - C++
Народ выручайте. В задании необходимо создать связной список с записью в файл и восстановлением из файла. Со списком я более-менее...

Вывести список слов в порядке убывания количества вхождений слов - C++
Доброго времени суток. Задание такое: вывести на стандартный выходной поток список всех различных слов в файле в порядке убывания...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
16.04.2013, 20:23
Ответ Создать тему
Опции темы

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