![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 26.04.2012
Сообщений: 9
|
![]()
Помогите пожалуйста переделать программу. У меня есть готовая программа.
Разработать алгоритм, производящий уплотнение файлов на диске при использовании метода цепочечного размещения файлов. Создать программу, реализующую данный алгоритм. Входные данные программы: Файл «fs.txt», содержащий три колонки данных, разделенных табуляцией: некий порядковый номер (по возрастанию), строку длиной 8 символов (или «0»), указатель (порядковый номер) другой строки (блока файла). Пример: ………………. 1 IjRkd&4; 2 2 LMd$w;@f 0 3 KdLi4Md’ 6 4 0ePd4ldd 0 5 0 0 6 ,d:w4prd 4 ………………. И файл «mft.txt», содержащий три колонки: им файла, начальный блок файла, длину файла в блоках. ………………. File A.txt 1 2 File B.doc 3 3 ………………. Программа должна: 1. Составить битовую таблицу свободных и используемых блоков. 2. Пронумеровать свободные блоки, запомнить их адреса (порядковые номера) и записать в файл «empty.txt» в виде: ………………. [Номер блока по порядку] [Адрес блока] ………………. 3. Произвести уплотнение файлов. То есть на основании входных данных переместить блоки данных таким образом, чтобы блоки одного файла располагались последовательно. Информацию о пустом пространстве записать в конец выходного файла. 4. Воспроизвести в файл «out_fs.txt» итоги работы: Пример: ………………. 1 IjRkd&4; 2 2 LMd$w;@f 0 3 KdLi4Md’ 4 4 ,d:w4prd 5 5 0ePd4ldd 0 6 0 0 ………………. И в файл «out_mft.txt» обновленную информацию о расположении файлов (в данном примере не изменится). |
![]() |
![]() |
![]() |
#2 |
Новичок
Джуниор
Регистрация: 26.04.2012
Сообщений: 9
|
![]()
У меня есть программа, но в этой программе идет цепочечное размещение файлов. Помогите переделать в непрерывное перемещение
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace Лаба2 { class Program { static void Main(string[] args) { String textfs = File.ReadAllText("fs.txt"); String textmft = File.ReadAllText("mft.txt"); Char[] r = { '\r', '\n' };//массив разделителей String[] fs1 = textfs.Split(r, StringSplitOptions.RemoveEmptyEntri es);//разбиваем строку String[,] fs = new string[fs1.Length, 3]; StreamWriter bitmap = new StreamWriter("bitmap.txt"); StreamWriter empty = new StreamWriter("empty.txt"); Console.WriteLine("Начинаем работать..."); String[] c = new String[10000]; String[] b = new String[100]; int cint = 0; int q = 1; int q1 = 1; for (int i = 0; i < fs1.Length; i++) { String[] fs3 = fs1[i].Split('\t');//разбиваем строку по значениям //--------------------------// for (int j = 0; j < 3; j++) { fs[i, j] = fs3[j];//двумерная таблица } if (fs[i, 1].Equals("0"))//добавляем данные в битовую таблицу и в таблицу пустых мест { bitmap.WriteLine(q.ToString() + "\t" + "0"); q++; empty.WriteLine(q1.ToString() + "\t" + fs[i, 0]); q1++; } else { bitmap.WriteLine(q.ToString() + "\t" + "1"); q++; } } Console.WriteLine("Составляю битовую таблицу..."); bitmap.Close(); empty.Close(); String[] mft1 = textmft.Split(r, StringSplitOptions.RemoveEmptyEntri es); String[,] mft = new string[mft1.Length, 3]; double space = 0; String[] name = new String[100000]; for (int i = 0; i < mft1.Length; i++) { String[] mft3 = mft1[i].Split('\t'); for (int j = 0; j < 3; j++) { mft[i, j] = mft3[j]; } name[i] = mft[i, 0]; } StreamWriter out_fs = new StreamWriter("out_fs.txt"); StreamWriter out_mft = new StreamWriter("out_mft.txt"); Console.WriteLine("Идет процесс Дефрагментации..."); q = 1; for (int i = 0; i < mft1.Length; i++)//дефрагментация диска { int ch = 0; int nr = Int32.Parse(mft[i, 1]); nr = nr - 1; int t = 1; while (ch != Int32.Parse(mft[i, 2])) { if (t != Int32.Parse(mft[i, 2])) { out_fs.WriteLine(q.ToString() + "\t" + fs[nr, 1] + "\t" + (q + 1).ToString()); c[cint] = c[cint] + "" + fs[nr, 1]; ch++; q++; nr = Int32.Parse(fs[nr, 2]) - 1; t++; } else { out_fs.WriteLine(q.ToString() + "\t" + fs[nr, 1] + "\t0"); c[cint] = c[cint] + "" + fs[nr, 1]; cint++; ch++; q++; nr = Int32.Parse(fs[nr, 2]) - 1; } } q1 = q - Int32.Parse(mft[i, 2]); out_mft.WriteLine(mft[i, 0] + "\t" + q1.ToString() + "\t" + mft[i, 2]); } Console.WriteLine("Записываю выходные данные..."); for (int i = 0; i < fs1.Length; i++)//дописываем 0 в out_fs { if (fs[i, 1].Equals("0")) { out_fs.WriteLine(q.ToString() + "\t0\t0"); q++; } } out_fs.Close(); out_mft.Close(); } } } |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Алгоритм дефрагментации | aka.vatakats | C# (си шарп) | 1 | 26.04.2012 17:11 |
код программы дефрагментации любого диска под досом | stydent 93 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 12 | 28.02.2012 11:13 |
Разработайте алгоритм методом пошаговой детализации и программу, реализующую этот алгоритм. | iamhated | Помощь студентам | 1 | 15.01.2012 16:24 |
Разработайте алгоритм методом пошаговой детализации и программу, реализующую этот алгоритм | iamhated | Помощь студентам | 1 | 14.01.2012 16:22 |