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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Что есть "С++" в Visual Studio? http://www.cyberforum.ru/cpp/thread135102.html
Здравствуйте! Сама форум посещаю уже давно (но не регистрировалась до данного времени). Мне стало интересно... что же такое С++ в visual studio? Ну да ладно, писать консольные приложения - это,...
C++ Нужен радар для игры У меня возникла необходимость в создании радара для игры. Я написал диалоговое приложение, в котором есть массив данных игровых объектов (координаты x,y, название и т.п.). Необходимо вывести окно... http://www.cyberforum.ru/cpp/thread135090.html
C++ Доска Гальтона
Ребят, очень нужно..срочно решить две задачи на Си! Сама не в силах справиться...((( 1. Доска гальтона. изобразить на экране доску гальтона с движущимися по ней шариками. одновременно по доске...
треугольник C++
Ребята, помогите с задачкой пожалуйста. Сам недавно начал осваивать С++,а задачка сложная попалась....надо быстро сделать.... Даны действительные числа x,y. В треугольнике, вершинами которого...
C++ строковые! http://www.cyberforum.ru/cpp/thread134772.html
Задача в T.P Даны две строки: S1 и S2.Определить колличество вхождений строки S2 в строку S1.
C++ "Чистый" c++ в Visual Studio... Довольно странный вопрос... но все же осмелюсь его задать. Сразу оговорюсь, что сам я пишу на C# и не собираюсь переходить на C++. То есть, данный вопрос, не более чем любопытство. Вот C++ в Visual... подробнее

Показать сообщение отдельно
beliuk
1 / 1 / 0
Регистрация: 13.02.2010
Сообщений: 12

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

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