Код:
using System;
/*
Создать базовый класс «Грузоперевозчик» и производные классы «Самолет», «Поезд», «Автомобиль».
Определить время и стоимость перевозки для указанных городов и расстояний.
*/
class Program
{
static void Main()
{
Грузоперевозчик грузоперевозчик = new Грузоперевозчик();
грузоперевозчик.Инициализация();
int номер = грузоперевозчик.ВыборГорода();
грузоперевозчик.ПоказатьПрайс(номер);
}
}
public class Грузоперевозчик
{
string введённыйТекст = null;
int количество = -1;
public void Инициализация()
{
Console.WriteLine(new string('*', 15) + " Инициализация значений грузоперевозчика " + new string('*', 15));
Console.WriteLine();
string введённыйТекст = null;
do
{
if (количество == -1) { Console.WriteLine("Введите количество городов > 0 в которые грузоперевозчик поставляет груз:"); количество = 0; }
else
{
Console.WriteLine("Ошибка. Введите количество городов > 0 в которые грузоперевозчик поставляет груз:");
}
введённыйТекст = Console.ReadLine();
}
while (!int.TryParse(введённыйТекст, out количество) || количество <= 0);
this.КоличествоГородов = количество;
for (int i = 0; i < количество; i++)
{
Console.WriteLine("Укажите наименование города под #{0}: ", i);
this.Город[i] = Console.ReadLine();
int расстояние = -1;
do
{
if (расстояние == -1) { Console.WriteLine("Укажите расстояние(число) до города {0}: ", this.Город[i]); расстояние = 0; }
else
{
Console.WriteLine("Ошибка ввода! Укажите расстояние(число) до города {0}: ", this.Город[i]);
}
введённыйТекст = Console.ReadLine();
}
while (!int.TryParse(введённыйТекст, out расстояние));
this.Расстояние[i] = расстояние;
}
Console.WriteLine(new string('*', 15) + " Завершение инициализации значений для грузоперевозчика " + new string('*', 15));
Console.WriteLine();
}
public int ВыборГорода()
{
int номерГорода = -1;
do
{
if (номерГорода == -1)
{
Console.WriteLine("Введите номер города куда нужно доставить:");
номерГорода = 0;
}
else
{
Console.WriteLine("Ошибка ввода! Введите номер города куда нужно доставить:");
}
for (int i = 0; i < количество; i++)
{
Console.WriteLine("#{0} - город {1}", i, this.Город[i]);
}
введённыйТекст = Console.ReadLine();
}
while (!int.TryParse(введённыйТекст, out номерГорода) || номерГорода > количество - 1);
return номерГорода;
}
public void ПоказатьПрайс(int номерГорода)
{
string город = this.Город[номерГорода];
int s = this.Расстояние[номерГорода];
Console.WriteLine("{0} Прайс лист на грузоперевозку в город {1} {0}", new string('*', 8), город);
Console.WriteLine();
Console.WriteLine("Доставка самолётом в город {0}, расстояние до города {1}: ", город, s);
Console.WriteLine("Цена : {0} Длительность поставки : {1}"
, this.СтоимостьДоставкиСамолётом(s),
this.ДлительностьДоставкиСамолётом(s));
Console.WriteLine();
Console.WriteLine("Доставка поездом в город {0}, расстояние до города {1}: ", город, s);
Console.WriteLine("Цена : {0} Длительность поставки : {1}"
, this.СтоимостьДоставкиПоездом(s),
this.ДлительностьДоставкиПоездом(s));
Console.WriteLine();
Console.WriteLine("Доставка автомобилем в город {0}, расстояние до города {1}: ", город, s);
Console.WriteLine("Цена : {0} Длительность поставки : {1}"
, this.ДлительностьДоставкиАвтомобилем(s),
this.ДлительностьДоставкиАвтомобилем(s));
Console.WriteLine();
}
public int ДлительностьДоставкиСамолётом(int s)
{
return new Самолет().ДлительностьДоставки(s);
}
public int ДлительностьДоставкиПоездом(int s)
{
return new Поезд().ДлительностьДоставки(s);
}
public int ДлительностьДоставкиАвтомобилем(int s)
{
return new Автомобиль().ДлительностьДоставки(s);
}
public int СтоимостьДоставкиСамолётом(int s)
{
return new Самолет().СтоимостьДоставки(s);
}
public int СтоимостьДоставкиПоездом(int s)
{
return new Поезд().СтоимостьДоставки(s);
}
public int СтоимостьДоставкиАвтомобилем(int s)
{
return new Автомобиль().СтоимостьДоставки(s);
}
static int количествоГородов;
public int Стоимость { get; set; }
static Грузоперевозчик()
{
}
public int КоличествоГородов
{
get { return количествоГородов; }
set { количествоГородов = value; }
}
string[] город;
public string[] Город
{
get { if (город == null) город = new string[количествоГородов]; return город; }
set { город = value; }
}
int[] расстояние;
public int[] Расстояние
{
get { if (расстояние == null) расстояние = new int[количествоГородов]; return расстояние; }
set { расстояние = value; }
}
}
class Самолет : Грузоперевозчик
{
int цена = 100000;
public int ДлительностьДоставки(int s)
{
return s / Скорость;
}
public int СтоимостьДоставки(int s)
{
int t = ДлительностьДоставки(s);
if (t >= 0 && t <= 10) return цена;
else if (t > 20) return цена + 5000;
else return цена + 10000;
}
public int Скорость { get; } = 500;
}
class Поезд : Грузоперевозчик
{
int цена = 40000;
public int ДлительностьДоставки(int s)
{
return s / Скорость;
}
public int СтоимостьДоставки(int s)
{
int t = ДлительностьДоставки(s);
if (t >= 0 && t <= 10) return цена;
else if (t > 20) return цена + 5000;
else return цена + 10000;
}
public int Скорость { get; } = 120;
}
class Автомобиль : Грузоперевозчик
{
int цена = 20000;
public int ДлительностьДоставки(int s)
{
return s / Скорость;
}
public int СтоимостьДоставки(int s)
{
int t = ДлительностьДоставки(s);
if (t >= 0 && t <= 10) return цена;
else if (t > 20) return цена + 5000;
else return цена + 10000;
}
public int Скорость { get; } = 80;
}