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

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

Войти
Регистрация
Восстановить пароль
 
Юляшка
3 / 3 / 1
Регистрация: 14.12.2008
Сообщений: 30
#1

Работа со строками. Связное хранение строк. - C++

05.07.2009, 12:54. Просмотров 686. Ответов 7
Метки нет (Все метки)

Постановка задачи
В текстовом файле хранится последовательность слов. Предполагается, что слово содержит не более 20 букв, слова отделяются друг от друга одним или бо-лее пробелами, количество слов в файле не ограничено.
Требуется:
1. Прочитать исходный текст из файла и поместить его в памяти, использовать однонаправленные циклические цепочки . Каждое звено текста размещается в памяти динамически и содержит строку, изображающую слово, а также ссылку на следующее звено)))

Решение задачи должно быть оформлено в виде следующих функций:
chain* add(chain*, const char*);
char* getCurrWord(ifstream&);
chain* buildChain(const char*);
chain* txtProc(chain*);
void print(const chain*),
где chain – комбинированный тип, описывающий звено цепочки.
Разделители между словами:
1. пробел (один или несколько);
2. символ табуляции;
3. символ конца строки;
4. .
5. ,
6. ;
7. :
8. !
9. ?
10. –
11. ‘
12. “
Выдаёт ошибку,что память не может быть written (иногда read)
Код,конечно,оставляет желать лучшего,но....
Подскажите,что сможете






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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// Текст.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
 
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
struct chain
{
    char* pchar;
    chain* next;
};
/*chain* add(chain* first, char& e)
{
    chain* tmp;
    tmp=new chain;
    tmp->pchar=e;
    if(first==0)
    {
        tmp->next=tmp;
        return tmp;
    }
    tmp->next=first;
    
    
    
    return first;
}*/
 
chain* addword(chain* first,const char* wrd,int n)
{
chain* tmp=new chain;
tmp->pchar=new char[n];
//strcpy(tmp->pchar,wrd);
for(int i=0;i<n;i++)
tmp->pchar[i]=wrd[i];
tmp->next=0;
chain* curr=first;
curr->next=tmp;
return first;
}
/*void print(  chain *first)
{
      chain* tmp=first;
          do
     {
          for(int i=0;i < (strlen(tmp->pchar));i++)
          cout<<tmp->pchar[i];
          tmp=tmp->next;
            cout<<'\n';
     }
while(tmp->next!=first);
 
}*/
 
int main()
{
    char* FromPath=new char;
    ifstream fin ("hamlet.txt");
    
    chain* first = new chain;
    chain* last = first;
    char tmp;
 
    do
    {
        tmp=fin.get();
    }
    while ((tmp == ' ' || tmp == '\t' || tmp == '\n' || tmp == '.' || tmp == ';' || tmp == ':' || tmp == '!' || tmp == '?' || tmp == '-' || tmp == '`' || tmp == '"'));
    
    FromPath[0] = tmp;
    int counter = 1;
 
    do
    {
        FromPath=new char[20];
        tmp=fin.get();
        if((tmp == ' ' || tmp == '\t' || tmp == '\n' || tmp == '.' || tmp == ';' || tmp == ':' || tmp == '!' || tmp == '?' || tmp == '-' || tmp == '`' || tmp == '"'))
        {
            first=addword(first,FromPath,20);
            //delete FromPath;
            counter=0;
        }
        else
        {
            FromPath[counter]=tmp;
            counter++;
        }
            
    }
    while (!fin.eof());
 
    
 
    last->next =first;
    last=first;
 
    
    do
    {
        /*cout<<"gg";
        int i;*/
        /*for(i=0;i<20;i++)
        {*/
            cout<<last->pchar;
            
            
        //}
        
        last=last->next;
        
        
    }
    while (last->next!=first);
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2009, 12:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа со строками. Связное хранение строк. (C++):

Работа со строками и с массивами строк - C++
Решил сделать программу , но не знаю как реализовать очень важную часть. Надо считывать координаты с файла(в текстовом файле есть к...

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

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

Хранение большого (15000) количества строк в строковом массиве - C++
Здравствуйте! Мне нужно создать генератор слов. Я решил пойти путем словаря + генератор псевдослучайных чисел. Файл сделал вложением,...

Хранение данных пользователя и работа с ними - C++
Здравствуйте. Есть игровой сервер. При входе на сервер игроку автоматически выдается ID игрока (0-1000) и происходит запрос к БД и...

Работа с строками - C++
Здравствуйте! Есть строка (предложение) надо убрать все пробелы, в т. ч. в начали конце и получить количество слов в этом предложении. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
05.07.2009, 14:01 #2
То есть, нужно просто считать из файла слова, пропуская пробелы, после чего разместить каждое слово в динамической памяти. Правильно я понял ?
0
Юляшка
3 / 3 / 1
Регистрация: 14.12.2008
Сообщений: 30
05.07.2009, 14:03  [ТС] #3
Что-то вроде этого
0
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
05.07.2009, 14:04 #4
Напиши мне в аську (357162175) расскажу, как это сделать
0
Юляшка
3 / 3 / 1
Регистрация: 14.12.2008
Сообщений: 30
05.07.2009, 14:07  [ТС] #5
Есть одна маленькая проблемка...Я не устанавливала себе аську...
(((Чувствую придётся это сделать...
0
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
05.07.2009, 14:11 #6
Сделай. Все равно когда-нибудь придется. Если ты линуксойд, то ставь джабер и пиши мне на (vitaliy844@gmail.com).
0
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
05.07.2009, 16:39 #7
Search.., могли и поделиться со всеми. мне тоже интересно
0
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
06.07.2009, 17:05 #8
TanT: Извини, просто не хочется тут что-либо объяснять. А то, вдруг еще нарушу какое-нибудь из правил Хитрого Ментая.

P.S: Если что, стучись в аську. Помогу, чем смогу =)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2009, 17:05
Привет! Вот еще темы с ответами:

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

Работа со строками - C++
У меня есть есть структурные переменные и указатели на них, естественно. предположим struct name() { char b=&quot;Hello!&quot;; ...

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

Работа со строками в СИ++ - C++
Парни помагите напишите прогу если не втягость заранее благодарю))) Вот условие: Дана строка. Преобразовать ее, удалив каждый символ *...


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

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

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