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

Создать модель файловой системы на основе связанных списков - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Записать програму с функцией http://www.cyberforum.ru/cpp-beginners/thread371966.html
Которая решает уравнение второго степени.Помогите пожалуйста,так как я даже не знаю с чего начать.Дело в том,что вообще не понимаю эти функции и ретёрны.. Знаю точно,что там должно быть 4 части: 1....
C++ Программа на определение числа Добрго дня или ночи, помогите составить код программы, уже 5 день пошёл, ничего путного в голову не лезет? Последовательность т.н. треугольных чисел определяется следующим образом: первый член... http://www.cyberforum.ru/cpp-beginners/thread371965.html
C++ Перегрузка оператора +
Всем добрый вечер. Прошу помочь разобраться. Задание - Для определения даты поставки строительных материалов необходимо перегрузить операцию вычисления даты через определенное количество дней. Для...
C++ Перегрузка оператора инкремента/декремента через friend
Нужно реализовать перегрузку унарного оператора через friend. Что я пытаюсь сделать: friend void operator -- ();//prototype void operator --() { cout << "Overloaded operator --"<< endl;...
C++ Паттерн Domain Model (Модель области определения) http://www.cyberforum.ru/cpp-beginners/thread371950.html
Кто что может подкинуть по этому Паттерну?))
C++ Выводит вместо массива е числа от балды. Где проблема? Пишу программу, попутно сталкиваюсь с проблемами, которые непонятны, ибо что-то подзабыл и не получается никак понять. #include <stdio.h> #include <conio.h> #include <math.h> int main() { ... подробнее

Показать сообщение отдельно
LezhiK
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 3

Создать модель файловой системы на основе связанных списков - C++

24.10.2011, 22:58. Просмотров 1834. Ответов 9
Метки (Все метки)

доброго времени суток, форумчане!!! В сентябре получил задание на курсовой проект по СПО:
"Файловая система использующая связанные списки для размещения файлов и связанный список для хранения информации о свободных блоках".

Вот особенности задания: Модель должна использовать некий файл в качестве виртуального жёсткого диска с виртуальной файловой структурой, аналогичной файловой структуре реального жёсткого диска. На этом виртуальном жёстком диске создаются "файлы" и "папки" в структуре файловой системы. Также должны быть реализованы основные операции реальной файловой системы.

Основные операции я реализовал:
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
#ifndef TEXT_H 
 #define TEXT_H
 
#include <iostream.h>
 #include <string.h>
 #include <alloc.h>
 #include <conio.h>
 #include <stdlib.h>
 
struct FDat {               //структура данных
 char Name[20];          //имя
 char r[4];              // расширение
 char d[10];             //       дата 
 int size;               // размер
 char attr[4];           //  атрибут
 FDat *Next;
 };
 
FDat *Add(FDat *, FDat *);
 FDat *Del(FDat *, int &);
 void Show (FDat *);
 void Find (FDat *);
 void FreeRam (FDat *);
 
#endif
Это хэдэр, а вот код:

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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
#include "head.h"
 
FDat *Add(FDat *posl)
 {
 if (posl == NULL){
 posl = new FDat;
 }
 else { posl->Next = new FDat;
 posl = posl->Next;
 }
 
 cout << "Vvedite - Name, Racsherenie, Daty, Razmer and Attribut: \n";
 cin >> posl->Name >> posl->r >> posl->d >> posl->size >> posl->attr;
 posl->Next = NULL;
 return posl;
 }
 
FDat *Del(FDat *begin, int &identif )
 {
 FDat *prom, *begin_new, *next;
 int x = 0, j =  0, k = 0, y = 0;
 char name[20];
 
 cout << "Mi udalaem!!! \n";
 
 cout <<"Vvedite NAME : ";
 cin >> name;
 begin_new = prom = next = begin;
 while ( begin != NULL) {
 for (int i = 0; i<strlen(name); i++)
 if (name[i] == begin->Name[i]) j++;
 if (j == strlen(name)) {
 if (prom == begin) {
 begin_new = begin->Next;
 prom = begin->Next;
 delete begin;
 x = 1;
 y = 1;
 begin = prom;
 }
 else {
 while ( k == 0) {
 if (next->Next == begin){
 if (next->Next->Next == NULL) {
 k = 1;
 x = 1;
 delete begin;
 next->Next = NULL;
 begin = NULL;
 identif = 1;
 begin_new = next;
 }
 else {
 prom = begin->Next;
 delete begin;
 x = 1;
 k = 1;
 y = 1;
 next->Next = begin = prom;
 }
 }
 next = next->Next;
 }
 }
 }
 if (y == 1) begin = NULL;
 if (begin != NULL)  begin = begin->Next;
 j = 0;
 }
 if (x == 0)
 cout << "NAME nety ... ";
 getch();
 return begin_new;
 
}
 
void Show (FDat *begin)
 {
 cout << "Prosmotr spiska!!! \n";
 cout <<"Name, Racsherenie, Data, Razmer and Attribut\n";
 while ( begin != NULL) {
 cout <<"\n"<< begin->Name <<"."<<begin->r <<" "<<begin->d <<"  "
 << begin->size <<" byte"<<begin->attr <<" \n ";
 begin = begin->Next;
 }
 getch();
 
}
 
void Find (FDat *begin)
 {
 int x = 0, j =  0;
 char name[20];
 cout << "poisk!!! \n";
 cout <<"Vvedite NAME : ";
 cin >> name;
 while ( begin != NULL) {
 for (int i = 0; i<strlen(name); i++)
 if (name[i] == begin->Name[i]) j++;
 
                                 if (j == strlen(name)) {
 cout <<"\n"<< begin->Name <<"."<<begin->r <<" "<<begin->d <<"  "
 << begin->size <<" byte"<<begin->attr <<" \n ";
 x = 1;
 j = 0;
 }
 
 begin = begin->Next;
 }
 if (x == 0)
 cout << "NAME nety ... ";
 getch();
 }
 
void FreeRam (FDat *begin)
 {
 FDat *prom;
 cout << "ochistka!!! \n";
 prom = begin;
 while ( prom != NULL) {
 begin = begin->Next;
 delete prom;
 prom = begin;
 }
 }
 
////////////////////////////////////////////////////
 
int main ()
 {
 long int mem;
 FDat *Begin = NULL, *Posl = NULL, *Dopol;
 int ch, iden = 0;               //   наж. клавиша
 
                mem = farcoreleft(); //     Размер своб. памяти
 cout <<"Memory - "<<mem<<"\n";
 do {
 cout<<" <1> - DOBAVIT ZAPIS \n"
 <<" <2> - UDALIT ZAPIS \n"
 <<" <3> - PROSMOTR SPISKA \n"
 <<" <4> - POISK \n"
 <<" <5> - EXIT \n";
 
                  cin>>ch;       //  {реализация меню}
 
                  switch (ch) {
 case 1 :
 cout <<"adress = " <<Begin;
 cout <<"adress = " <<Posl;
 if (Begin == NULL) {
 Begin = Add(Posl);
 Posl = Begin;
 }
 else Posl = Add( Posl);
 cout <<"adress = " <<Begin;
 break;
 case 2 :
 Dopol = Del(Begin, iden);
 if (iden == 0) Begin = Dopol;
 else Posl = Dopol;
 break;
 case 3 :
 Show(Begin);
 break;
 case 4 :
 Find(Begin);
 break;
 }
 } while (ch != 5);
 
 cout <<"\n Memory - " <<farcoreleft()<<"\n";
 
 FreeRam(Begin);           //   очистка памяти
 getch();
 
 cout <<"\n Memory - " <<farcoreleft()<<"\n";
 if (mem == farcoreleft()) cout <<"Pamat' ne poterana ... ";
 else cout << "ERROR!!! Potera Memory!!!";
 
 cout<<" Press key..."<<endl;
 getch();
 
 return 0;
 }

если есть ошибки, то исправьте пожалуйста))
Как связать размещение файлов со списком, создать файл-виртуальный жесткий диск???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru