0 / 1 / 0
Регистрация: 17.12.2019
Сообщений: 131
|
|
1
|
Создание функций
01.06.2020, 15:10. Показов 129. Ответов 0
Добавить в программу несколько функций, чтобы в main было 3 вызова функции - ввод, обработка, вывод
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
| #define _CRT_SECURE_NO_WARNINGS
#include <locale.h>
#include <stdlib.h>
#include<stdio.h>
#include<string.h>
struct LIST { //структура
char* word;
LIST* next; //ссылка на след элемент списка
};
int main()
{
FILE* in; //открытие файла
LIST* head, * p, * prev; //вспомогательные указатели
char word[10000]; //размер списка
in=fopen("C:\\Users\\Admin\\Desktop\\in.txt", "r"); //чтение файла
if (in) //если файл сущ
{
if (fscanf(in, "%s", word) != EOF) //проверка конца слова
{
head = new LIST; //выделение памяти под голову списка
p = head; //заносим адрес головы списка во вспом. указатель
p->word = new char[strlen(word) + 1];
strcpy(p->word, word); //записать слово
while (fscanf(in, "%s", word) != EOF)
{
p->next = new LIST; //установить ссылку узла р на новый узел
p = p->next; //поиск последнего узла
p->word = new char[strlen(word) + 1];
strcpy(p->word, word);
}
p->next = NULL; //окончание списка
p = head;
prev = head;
while (p->next)
if (strlen(p->word) == 1)
if (p == head)// обмен узлов
{
head = p->next; //Установление связи в обход удаляемого элем.
prev = head;
delete p->word;
delete p; //освобождение памяти
p = head;
}
else
{
prev->next = p->next;
delete p->word;
delete p;
p = prev->next;
}
else
{
prev = p;
p = p->next;
}
if (strlen(p->word) == 1) //удаление узла
{
if (p == head)
head = NULL;
else prev->next = NULL;
delete p->word;
delete p;
}
fclose(in);
in = fopen("C:\\Users\\Admin\\Desktop\\in.txt", "w");
if (head)
{
while (head->next)
{
p = head;
fprintf(in, "%s ", p->word);
head = p->next;
delete p->word;
delete p;
}
fprintf(in, "%s", head->word);
delete head->word;
delete head;
head = NULL;
}
}
else
{
fclose(in);
in = fopen("C:\\Users\\Admin\\Desktop\\in.txt", "w");
}
fclose(in);
}
} |
|
0
|