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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужно исправить 2 ошибки в коде http://www.cyberforum.ru/cpp-beginners/thread43015.html
собственно, САБЖ. нужно исправить 2 ошибки в коде, чтобы его можна было скомпилить и сделать из него ехе-шник. код немалый, тому залил на sendspace: http://sendspace.com/file/ubkkh6 времени...
C++ Вывод случайных текстов на экран помогите пожалуйста, мне нужен код для случайных выводов текстов на экран http://www.cyberforum.ru/cpp-beginners/thread42999.html
C++ обход массива рендом.
Дан массив 10 на 10. Рендом выбираем точку, сравниваем элемент... Затем нужно опять выбирать рендом элемент, но так что бы не выбирать тот, который уже брали. Как можно запомнить, что выбирали уже, а...
Не работает цикл for С++ Borland C++
Элементарная программа: #include <iostream.h> #include <graphics.h> #include <math.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <dos.h> void main ()
C++ Программа производит неправильный вывод http://www.cyberforum.ru/cpp-beginners/thread42956.html
Помогите найти ошибку!!! Заранее спасибо!!! #include <iostream.h> main (void) { int a = 1; void f() { int b = 1;
C++ Никак не могу найти ошибку #include<iostream.h> #include<conio.h> #include<math.h> #include<STDLIB.H> #include<COMPLEX.H> main() { const m=7, n=7; m5: int A,i,j,F; clrscr(); подробнее

Показать сообщение отдельно
Юляшка
3 / 3 / 1
Регистрация: 14.12.2008
Сообщений: 30

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

05.07.2009, 12:54. Просмотров 696. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru