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

C++

Войти
Регистрация
Восстановить пароль
 
beliuk
1 / 1 / 0
Регистрация: 13.02.2010
Сообщений: 12
#1

динамическая память, работа с текстом. - C++

25.05.2010, 16:01. Просмотров 425. Ответов 0
Метки нет (Все метки)

Помогите, пожалуйста, найти ошибку. Программа считывает входной файл с текстом, создаёт два двусвязных списка чьи элементы - слова. В первой список поместить слова с четным кол-вом символов, во второй все остальные. Отсортировать слова по азбуке. Вывести в отдельные файлы.

Вроде всё компилируется, но ничего не выводит и не создаёт файлы . Помогите найти в чем проблема!
Спасибо больше за внимание!
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 
FILE *in,*out1,*out2;
struct List
{
        List *Next,*Pre;
        char *S;
};
List *Head1,*Tail1;
List *Head2,*Tail2;
 
void add_L(int a,char *s)
{
        List *p=(List*)malloc(sizeof(List));
        p->S=(char*)malloc(strlen(s)*sizeof(char));
        p->S[0]=0;
        strcat(p->S,s);
        if (a==1)
           {
           if (Head1!=0)
              {
              Tail1->Next=p;
              p->Next=0;
              p->Pre=Tail1;
              Tail1=p;
              }
           else
              {
              p->Next=0;
              p->Pre=0;
              Tail1=p;
              Head1=p;
              }
           }
        if (a==2)
           {
           if (Head2!=0)
              {
              Tail2->Next=p;
              p->Next=0;
              p->Pre=Tail2;
              Tail2=p;
              }
           else
              {
              p->Next=0;
              p->Pre=0;
              Tail2=p;
              Head2=p;
              }
           }
}
 
void del_L(int a)
{
 if (a==1)
    {
    List *tek=Head1;
    while(tek!=0)
         {
         List *tmp=tek;
         tek=tek->Next;
         free(tmp->S);
         free(tmp);
         }
    }
 if (a==2)
    {
    List *tek=Head2;
    while(tek!=0)
         {
         List *tmp=tek;
         tek=tek->Next;
         free(tmp->S);
         free(tmp);
         }
    }
}
 
void sort_L(List *h,List *t)
{
List *og=t;
while(1)
    {
    List *tek=h;
    if (tek==0) break;
    List *tek2=h->Next;
    if (tek2==0) break;
    while(1)
         {
         if (strcmp(tek->S,tek2->S)>0)
            {
            char tmp1[1000];
            tmp1[0]=0;
            strcat(tmp1,tek->S);
            free(tek->S);
            tek->S=(char*)malloc(strlen(tek2->S)*sizeof(char));
            tek->S[0]=0;
            strcat(tek->S,tek2->S);
            free(tek2->S);
            tek2->S=(char*)malloc(strlen(tmp1)*sizeof(char));
            tek2->S[0]=0;
            strcat(tek2->S,tmp1);
            //List *tmp2=tek2;
            }
         if (tek2==og) break;
         tek2=tek2->Next;
         tek=tek->Next;
         }
    tek=h;
    og=og->Pre;
    if (tek==og) break;
    }
}
 
int main()
{
in=fopen("input.txt","r");
   while(1)
   {
   if (feof(in)) break;
   char tmp[1000];
   tmp[0]=0;
   fscanf(in,"%s",tmp);
   if ((strlen(tmp)&2)==1) add_L(1,tmp);
                      else add_L(2,tmp);
   }
fclose(in);
sort_L(Head1,Tail1);
sort_L(Head2,Tail2);
 
out1=fopen("out1.txt","w");
List *tek=Head1;
 
   while(1)
   {
   fprintf(out1,"%s\n",tek->S);
   tek=tek->Next;
   if (tek==0) break;
   }
 
fclose(out1);
out2=fopen("out2.txt","w");
tek=Head2;
 
   while(1)
   {
   fprintf(out2,"%s\n",tek->S);
   tek=tek->Next;
   if (tek==0) break;
   }
 
fclose(out2);
 
del_L(1);
del_L(2);
 
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2010, 16:01
Я подобрал для вас темы с готовыми решениями и ответами на вопрос динамическая память, работа с текстом. (C++):

Списки, динамическая память и указатели - C++
Нужна помощь! Требуется написать функцию rearrangment( ), меняющую i-ю и j-ю строки текста. То бишь нужно создать однонаправленный...

Указатели. Динамическая память - C++ Builder
Помогите Плз Плз Плз Плз Плз Плз 1.Дано натуральное число n. Переставить местами первую и последнюю цифры этого числа 2.Дано...

Динамическая память, ошибка с конвертом типов данных - C++ Builder
Всем доброго времени суток. Задание: Найти индекс минимального элемента в: 1)Символьном массиве из 8 элементов; 2)массиве целых чисел...

Работа с текстом - C++ Builder
В общем, есть два окна RichEdit. В первое я ввожу текст, и после нажатия на Button, текст должен обработаться и вывестись в RichEdit2. Как...

Работа с текстом... - C++ Builder
Всем доброго времени суток ... Такая ситуация - загружаю через диалог в RichEdit1 - определённый текстовик с текстом. Вопрос: как сделать...

Работа с текстом - C++ Builder
Доброго вечера. Прошу совета - задача простая , но хотелось бы услышать мнение коллег по оптимизации и более правильному подходу. ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2010, 16:01
Привет! Вот еще темы с ответами:

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

Работа с текстом в RichEdit - C++ Builder
Есть текст в RichEdit нужно: 1) заменить выделенный текст, на другой по нажитии кнопки н-р выделено: ПРИВЕТ МИР после нажатия оно...

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

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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