using System using System Collections Generic using System Linq using

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace russian.metrics
{
class Program
{
static void Main(string[] args)
{
// Русские неметрические единицы длины: 1 верста = 500 саженей; 1 сажень = 3 аршина; 1 аршин = 16 вершков; 1 вершок = 44,45 мм
var вершок = 4445; // в сотых долях миллиметра для того что бы работать в целых числах для старших единиц
var аршин = 16 * вершок;
var сажень = 3 * аршин;
var верста = 500 * сажень;
Console.WriteLine("Введите длину отрезка P в метрах");
var P = Console.ReadLine();
long L, X;
float V;
if (long.TryParse(P, out L))
{
L = L * 1000 * 100; // переводим в сотые доли миллиметра
Console.WriteLine("В русских метрических единицах, длина отрезка составляет:");
X = (L / верста);
L = L % верста; // остаток в сотых долях миллиметра
if (X != 0)
Console.WriteLine(X + " верст");
X = (L / сажень);
L = L % сажень; // остаток в сотых долях миллиметра
if (X != 0)
Console.WriteLine(X + " саженей");
X = (L / аршин);
L = L % аршин; // остаток в сотых долях миллиметра
if (X != 0)
Console.WriteLine(X + " аршин");
V = (L / вершок); // остаточная длина в вершках вчисляется с плавающей точкой для точности
if (V != 0)
Console.WriteLine(V + " вершков");
}
else
Console.WriteLine("Не верный формат!");
Console.WriteLine("нажмите Enter для завершения...");
Console.ReadLine();
}
}
}