var words_from_file = (string[]) Deserialize(fileName_); for (var i = 0; i < words_from_file.Length; i++) Console.WriteLine($"{i} = {words_from_file[i]}"); } catch(Exception e) { Console.WriteLine(e); } finally { Console.ReadLine(); } }
private static void Serialize(string file, object o) { using (var fs = new FileStream(file, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)) { var bf = new BinaryFormatter(); bf.Serialize(fs, o); } }
private static object Deserialize(string file) { using (var fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read)) { var bf = new BinaryFormatter(); var o = bf.Deserialize(fs); return o; } } }
Сериализация в бинарный файл. В вашей программе действия записи и вывода происходят 2 раза, если это действительно надо повторить, то добавьте все в цикл и повторяйте сколько надо/хочется
// PascalABC.NET 3.3.5, сборка 1640 от 17.03.2018 // Внимание! Если программа не работает, обновите версию!
procedure ArrRead(var a:array of integer); begin var n:=ReadInteger('Количество элементов в массиве:'); a:=ReadArrInteger('Введите элементы массива:',n) end;
procedure ArrMult(a:array of integer; var p:BigInteger); begin p:=a.Aggregate(BigInteger(1),(p,q)->p*q) end;
begin var m1,m2:array of integer; ArrRead(m1); ArrRead(m2); var p1,p2:BigInteger; ArrMult(m1,p1); ArrMult(m2,p2); Writeln('Произведение элементов первого массива ',p1); Writeln('Произведение элементов второго массива ',p2); Writeln('Общее произведение ',p1*p2) end.
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
internal static class Program
{
private const string fileName_ = "words.dat";
private static void Main()
{
try
{
Console.WriteLine("Ввод строк/слов, каждое с новой строки, окончание ввода - пустая строка");
var words = new List<string>();
string line;
while ((line = Console.ReadLine()) != string.Empty)
words.Add(line);
Serialize(fileName_, words.ToArray());
words.Clear();
Console.WriteLine("Вывод данных из файла");
var words_from_file = (string[]) Deserialize(fileName_);
for (var i = 0; i < words_from_file.Length; i++)
Console.WriteLine($"{i} = {words_from_file[i]}");
}
catch(Exception e)
{
Console.WriteLine(e);
}
finally
{
Console.ReadLine();
}
}
private static void Serialize(string file, object o)
{
using (var fs = new FileStream(file, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
{
var bf = new BinaryFormatter();
bf.Serialize(fs, o);
}
}
private static object Deserialize(string file)
{
using (var fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read))
{
var bf = new BinaryFormatter();
var o = bf.Deserialize(fs);
return o;
}
}
}
Сериализация в бинарный файл.
В вашей программе действия записи и вывода происходят 2 раза, если это действительно надо повторить, то добавьте все в цикл и повторяйте сколько надо/хочется
// Внимание! Если программа не работает, обновите версию!
procedure ArrRead(var a:array of integer);
begin
var n:=ReadInteger('Количество элементов в массиве:');
a:=ReadArrInteger('Введите элементы массива:',n)
end;
procedure ArrMult(a:array of integer; var p:BigInteger);
begin
p:=a.Aggregate(BigInteger(1),(p,q)->p*q)
end;
begin
var m1,m2:array of integer;
ArrRead(m1); ArrRead(m2);
var p1,p2:BigInteger;
ArrMult(m1,p1); ArrMult(m2,p2);
Writeln('Произведение элементов первого массива ',p1);
Writeln('Произведение элементов второго массива ',p2);
Writeln('Общее произведение ',p1*p2)
end.