for (int j = 0; j < Page.size; j++)
{
if (j % 10 == 0 && j != 0)
Console.Write("");
Console.Write(Convert.ToInt32(page.bitmap[j]) + " ");
}
Console.WriteLine("");
}
}
private void BinarySerializble(string path, Page page)
{
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate))
{
formatter.Serialize(fs, page);
}
}
private Page BinaryDeserializble(string path)
{
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate))
{
return (Page)formatter.Deserialize(fs);
}
}
}
}
Содержимое файла Page.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace programming_technologies_labwork1
{
[Serializable]
public class Page
{
public static int size = 128;
public int number;
public int[] data;
public bool[] bitmap;
public Page(int number)
{
this.number = number;
data = new int[size];
bitmap = new bool[size];
}
}
}
Содержимое файла Interface.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace programming_technologies_labwork1
{
class Interface
{
private VirtualMemory virtualMemory;
public Interface()
{
this.virtualMemory = null;
}
private void TakeAction(VirtualMemory virtualMemory)
{
int action, index, value;
string menu = "1 - Записать значение по индексу\n2 - Прочитать значение по индексу в переменную\n" +
"3 - Удалить значение по индексу\n4 - Перезаписать значение по индексу\n" +
"5 - Вывести массив на экран\n0 - Выйти\n";
Console.WriteLine(menu);
bool flag = true;
while (flag)
{
action = Convert.ToInt32(Console.ReadLine());
switch (action)
{
case 1:
Console.Write("Индекс = ");
index = Convert.ToInt32(Console.ReadLine());
Console.Write("Значение = ");
value = Convert.ToInt32(Console.ReadLine());
try {
virtualMemory.writeValue(index, value);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.WriteLine("\n" + menu);
break;
case 2:
Console.Write("Индекс = ");
index = Convert.ToInt32(Console.ReadLine());
try {
value = virtualMemory.readValue(index);
Console.WriteLine("Значение = {0}\n", value);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.WriteLine("\n" + menu);
break;
case 3:
Console.Write("Индекс = ");
index = Convert.ToInt32(Console.ReadLine());
try {
virtualMemory.deleteValue(index);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.WriteLine("\n" + menu);
break;
case 4:
Console.Write("Индекс = ");
index = Convert.ToInt32(Console.ReadLine());
Console.Write("Значение = ");
value = Convert.ToInt32(Console.ReadLine());
try {
virtualMemory.overwriteValue(index, value);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.WriteLine("\n" + menu);
break;
case 5:
virtualMemory.printArray();
break;
case 0: flag = false; break;
default: Console.WriteLine("Неверные данные\n"); break;
}
}
}
private VirtualMemory CreateArray()
{
VirtualMemory virtualMemory = null;
int action = 0;
Console.WriteLine("1 - Создать массив\n0 - Выйти\n");
bool flag = true;
while (flag)
{
action = Convert.ToInt32(Console.ReadLine());
switch (action)
{
case 0: flag = false; break;
case 1:
Console.WriteLine("Введите размер массива\n");
int arraySize = Convert.ToInt32(Console.ReadLine()); ;
try {
virtualMemory = new VirtualMemory(arraySize);
flag = false;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
break;
default: Console.WriteLine("Неверные данные\n"); break;
}
}
return virtualMemory;
}
public void Run()
{
try {
virtualMemory = CreateArray();
if (virtualMemory != null)
{
TakeAction(virtualMemory);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}