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

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

Восстановить пароль Регистрация
 
Юляшка
3 / 3 / 1
Регистрация: 14.12.2008
Сообщений: 30
05.07.2009, 12:54     Работа со строками. Связное хранение строк. #1
Постановка задачи
В текстовом файле хранится последовательность слов. Предполагается, что слово содержит не более 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Search..
Заказ софта
 Аватар для Search..
339 / 184 / 10
Регистрация: 26.05.2009
Сообщений: 863
05.07.2009, 14:01     Работа со строками. Связное хранение строк. #2
То есть, нужно просто считать из файла слова, пропуская пробелы, после чего разместить каждое слово в динамической памяти. Правильно я понял ?
Юляшка
3 / 3 / 1
Регистрация: 14.12.2008
Сообщений: 30
05.07.2009, 14:03  [ТС]     Работа со строками. Связное хранение строк. #3
Что-то вроде этого
Search..
Заказ софта
 Аватар для Search..
339 / 184 / 10
Регистрация: 26.05.2009
Сообщений: 863
05.07.2009, 14:04     Работа со строками. Связное хранение строк. #4
Напиши мне в аську (357162175) расскажу, как это сделать
Юляшка
3 / 3 / 1
Регистрация: 14.12.2008
Сообщений: 30
05.07.2009, 14:07  [ТС]     Работа со строками. Связное хранение строк. #5
Есть одна маленькая проблемка...Я не устанавливала себе аську...
(((Чувствую придётся это сделать...
Search..
Заказ софта
 Аватар для Search..
339 / 184 / 10
Регистрация: 26.05.2009
Сообщений: 863
05.07.2009, 14:11     Работа со строками. Связное хранение строк. #6
Сделай. Все равно когда-нибудь придется. Если ты линуксойд, то ставь джабер и пиши мне на (vitaliy844@gmail.com).
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
05.07.2009, 16:39     Работа со строками. Связное хранение строк. #7
Search.., могли и поделиться со всеми. мне тоже интересно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2009, 17:05     Работа со строками. Связное хранение строк.
Еще ссылки по теме:

Работа со строками C++
C++ Работа со строками
C++ Работа со строками и с массивами строк
C++ Хранение данных пользователя и работа с ними
C++ Работа со строками

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

Или воспользуйтесь поиском по форуму:
Search..
Заказ софта
 Аватар для Search..
339 / 184 / 10
Регистрация: 26.05.2009
Сообщений: 863
06.07.2009, 17:05     Работа со строками. Связное хранение строк. #8
TanT: Извини, просто не хочется тут что-либо объяснять. А то, вдруг еще нарушу какое-нибудь из правил Хитрого Ментая.

P.S: Если что, стучись в аську. Помогу, чем смогу =)
Yandex
Объявления
06.07.2009, 17:05     Работа со строками. Связное хранение строк.
Ответ Создать тему
Опции темы

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