Дан символный файл f. Записать в файл g с сохранением порядка следования те символы файла f - C#
Формулировка задачи:
C# Дан символный файл f.Записать в файл g с сохранением порядка следования те символы файла f.
a)которым в этом файле предшествует буква а;
б)вслед за которым в этом файле идет буква а.
Заранее спасибо большое
Решение задачи: «Дан символный файл f. Записать в файл g с сохранением порядка следования те символы файла f»
textual
Листинг программы
using System.IO;
interface IStateMachine
{
void PutNext(char ch);
}
class StateMachineA : IStateMachine
{
private bool _isPreviousA = false;
private readonly StreamWriter _output;
public StateMachineA(StreamWriter output)
{
_output = output;
}
public void PutNext(char ch)
{
if (_isPreviousA)
_output.Write(ch);
_isPreviousA = ch == 'a';
}
}
class StateMachineB : IStateMachine
{
private char? _previous = null;
private readonly StreamWriter _output;
public StateMachineB(StreamWriter output)
{
_output = output;
}
public void PutNext(char ch)
{
if (ch == 'a' && _previous != null)
_output.Write(_previous);
_previous = ch;
}
}
class Program
{
static void Render(StreamReader input, IStateMachine stateMachine)
{
int ch;
while ((ch = input.Read()) != -1)
{
stateMachine.PutNext((char)ch);
}
}
static void SolveProblemA(string inputFileName, string outputFileName)
{
using (var input = File.OpenText(inputFileName))
using (var output = File.CreateText(outputFileName))
{
Render(input, new StateMachineA(output));
}
}
static void SolveProblemB(string inputFileName, string outputFileName)
{
using (var input = File.OpenText(inputFileName))
using (var output = File.CreateText(outputFileName))
{
Render(input, new StateMachineB(output));
}
}
static void Main(string[] args)
{
SolveProblemA("f.txt", "gA.txt");
SolveProblemB("f.txt", "gB.txt");
}
}