Добавил:
cfe_o
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:lab5aip
.txt using System;
using System.Collections.Generic;
using System.IO;
namespace lab5voytenko
{
abstract class ASpaceship
{
public string Name { get; protected set; }
public int Capacity { get; protected set; }
public ASpaceship(string name, int capacity)
{
Name = name;
Capacity = capacity;
}
public static bool CanParse(string input)
{
if (string.IsNullOrEmpty(input))
return false;
var chunks = input.Split(new[] { "\t", " " },
StringSplitOptions.RemoveEmptyEntries);
int capacity;
if (chunks.Length != 3)
return false;
if (!int.TryParse(chunks[1], out capacity) || capacity < 0)
return false;
return true;
}
public static ASpaceship Parse(string input)
{
if (string.IsNullOrEmpty(input))
throw new Exception("Входные данные пусты");
var chunks = input.Split(new[] { "\t", " " },
StringSplitOptions.RemoveEmptyEntries);
int capacity;
// Проверяем данные.
if (chunks.Length != 3)
throw new Exception("Формат некорректный");
if (!int.TryParse(chunks[1], out capacity) || capacity < 0)
throw new Exception("Вместимость корабля неверная");
var shipType = chunks[0];
var name = chunks[2];
// Выясняем тип корабля.
if (shipType.Equals("LongRange",
StringComparison.InvariantCultureIgnoreCase))
return new LongRangeShip(name, capacity);
if (shipType.Equals("MiddleRange",
StringComparison.InvariantCultureIgnoreCase))
return new MiddleRangeShip(name, capacity);
if (shipType.Equals("NearRange",
StringComparison.InvariantCultureIgnoreCase))
return new NearRangeShip(name, capacity);
throw new Exception($"Тип {shipType} не поддерживается");
}
public override string ToString()
{
return $"Корабль \"{Name}\", "
+ $"вместимость: {Capacity}, "
+ $"дальность хода: {GetRange()}";
}
public abstract double GetRange();
}
class LongRangeShip : ASpaceship
{
public LongRangeShip(string name, int capacity)
: base(name, capacity) { }
public override double GetRange()
{
return 0.001;
}
}
class MiddleRangeShip : ASpaceship
{
public MiddleRangeShip(string name, int capacity)
: base(name, capacity) { }
public override double GetRange()
{
return 0.0001;
}
}
class NearRangeShip : ASpaceship
{
public NearRangeShip(string name, int capacity)
: base(name, capacity) { }
public override double GetRange()
{
return 0.00003;
}
}
class APlanet
{
public APlanet(string name, (double x, double y) position, int cargo)
{
Name = name;
Position = position;
Cargo = cargo;
}
public string Name { get; protected set; }
public (double x, double y) Position { get; protected set; }
public int Cargo { get; protected set; }
public static bool CanParse(string input)
{
if (string.IsNullOrEmpty(input))
return false;
var chunks = input.Split(new[] { "\t", " " },
StringSplitOptions.RemoveEmptyEntries);
int cargo;
// Проверяем данные.
if (chunks.Length != 4)
return false;
if (!int.TryParse(chunks[3], out cargo) || cargo < 0)
return false;
return true;
}
public static APlanet Parse(string input)
{
if (string.IsNullOrEmpty(input))
throw new Exception("Входные данные пусты");
var chunks = input.Split(new[] { "\t", " " },
StringSplitOptions.RemoveEmptyEntries);
int cargo;
// Проверяем данные.
if (chunks.Length != 4)
throw new Exception("Формат некорректный");
if (!int.TryParse(chunks[3], out cargo) || cargo < 0)
throw new Exception("Вместимость корабля неверная");
(double x, double y) position;
position.x = double.Parse(chunks[1].Replace(".", ","));
position.y = double.Parse(chunks[2].Replace(".", ","));
var name = chunks[0];
return new APlanet(name, position, cargo);
}
public override string ToString()
{
return $"Планета: \"{Name}\", "
+ $"Позиция: {Position}, "
+ $"Нужно груза: {Cargo}";
}
}
class Program
{
static void Main(string[] args)
{
List<APlanet> planets = new List<APlanet>();
var fileName = @"data.txt";
var dataAsString = File.ReadAllText(fileName);
dataAsString.Replace('.', ',');
var dataAsArray = File.ReadAllLines(fileName);
//Console.WriteLine(dataAsString);
foreach (var line in dataAsArray)
Console.WriteLine(line);
foreach (var line in dataAsArray)
if (ASpaceship.CanParse(line))
Console.WriteLine(ASpaceship.Parse(line));
else if (APlanet.CanParse(line))
{
line.Replace('.', ',');
Console.WriteLine(APlanet.Parse(line));
}
}
}
}
using System.Collections.Generic;
using System.IO;
namespace lab5voytenko
{
abstract class ASpaceship
{
public string Name { get; protected set; }
public int Capacity { get; protected set; }
public ASpaceship(string name, int capacity)
{
Name = name;
Capacity = capacity;
}
public static bool CanParse(string input)
{
if (string.IsNullOrEmpty(input))
return false;
var chunks = input.Split(new[] { "\t", " " },
StringSplitOptions.RemoveEmptyEntries);
int capacity;
if (chunks.Length != 3)
return false;
if (!int.TryParse(chunks[1], out capacity) || capacity < 0)
return false;
return true;
}
public static ASpaceship Parse(string input)
{
if (string.IsNullOrEmpty(input))
throw new Exception("Входные данные пусты");
var chunks = input.Split(new[] { "\t", " " },
StringSplitOptions.RemoveEmptyEntries);
int capacity;
// Проверяем данные.
if (chunks.Length != 3)
throw new Exception("Формат некорректный");
if (!int.TryParse(chunks[1], out capacity) || capacity < 0)
throw new Exception("Вместимость корабля неверная");
var shipType = chunks[0];
var name = chunks[2];
// Выясняем тип корабля.
if (shipType.Equals("LongRange",
StringComparison.InvariantCultureIgnoreCase))
return new LongRangeShip(name, capacity);
if (shipType.Equals("MiddleRange",
StringComparison.InvariantCultureIgnoreCase))
return new MiddleRangeShip(name, capacity);
if (shipType.Equals("NearRange",
StringComparison.InvariantCultureIgnoreCase))
return new NearRangeShip(name, capacity);
throw new Exception($"Тип {shipType} не поддерживается");
}
public override string ToString()
{
return $"Корабль \"{Name}\", "
+ $"вместимость: {Capacity}, "
+ $"дальность хода: {GetRange()}";
}
public abstract double GetRange();
}
class LongRangeShip : ASpaceship
{
public LongRangeShip(string name, int capacity)
: base(name, capacity) { }
public override double GetRange()
{
return 0.001;
}
}
class MiddleRangeShip : ASpaceship
{
public MiddleRangeShip(string name, int capacity)
: base(name, capacity) { }
public override double GetRange()
{
return 0.0001;
}
}
class NearRangeShip : ASpaceship
{
public NearRangeShip(string name, int capacity)
: base(name, capacity) { }
public override double GetRange()
{
return 0.00003;
}
}
class APlanet
{
public APlanet(string name, (double x, double y) position, int cargo)
{
Name = name;
Position = position;
Cargo = cargo;
}
public string Name { get; protected set; }
public (double x, double y) Position { get; protected set; }
public int Cargo { get; protected set; }
public static bool CanParse(string input)
{
if (string.IsNullOrEmpty(input))
return false;
var chunks = input.Split(new[] { "\t", " " },
StringSplitOptions.RemoveEmptyEntries);
int cargo;
// Проверяем данные.
if (chunks.Length != 4)
return false;
if (!int.TryParse(chunks[3], out cargo) || cargo < 0)
return false;
return true;
}
public static APlanet Parse(string input)
{
if (string.IsNullOrEmpty(input))
throw new Exception("Входные данные пусты");
var chunks = input.Split(new[] { "\t", " " },
StringSplitOptions.RemoveEmptyEntries);
int cargo;
// Проверяем данные.
if (chunks.Length != 4)
throw new Exception("Формат некорректный");
if (!int.TryParse(chunks[3], out cargo) || cargo < 0)
throw new Exception("Вместимость корабля неверная");
(double x, double y) position;
position.x = double.Parse(chunks[1].Replace(".", ","));
position.y = double.Parse(chunks[2].Replace(".", ","));
var name = chunks[0];
return new APlanet(name, position, cargo);
}
public override string ToString()
{
return $"Планета: \"{Name}\", "
+ $"Позиция: {Position}, "
+ $"Нужно груза: {Cargo}";
}
}
class Program
{
static void Main(string[] args)
{
List<APlanet> planets = new List<APlanet>();
var fileName = @"data.txt";
var dataAsString = File.ReadAllText(fileName);
dataAsString.Replace('.', ',');
var dataAsArray = File.ReadAllLines(fileName);
//Console.WriteLine(dataAsString);
foreach (var line in dataAsArray)
Console.WriteLine(line);
foreach (var line in dataAsArray)
if (ASpaceship.CanParse(line))
Console.WriteLine(ASpaceship.Parse(line));
else if (APlanet.CanParse(line))
{
line.Replace('.', ',');
Console.WriteLine(APlanet.Parse(line));
}
}
}
}
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]