-
Notifications
You must be signed in to change notification settings - Fork 0
/
LeitorUsuario.cs
52 lines (47 loc) · 1.61 KB
/
LeitorUsuario.cs
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.Linq;
namespace MatrixDistance;
public static class LeitorUsuario
{
public static int LerTamanho() {
return Utils.LerInt(
() => {
Console.WriteLine($"Insira o número de cidades:");
bool sucesso = int.TryParse(Console.ReadLine(), out int n);
return (sucesso, n);
}
);
}
private static int LerDistancia(int i, int j) {
return Utils.LerInt(
() => {
Console.WriteLine($"Insira a distância entre a cidade {i} e a cidade {j}:");
bool sucesso = int.TryParse(Console.ReadLine(), out int dist);
return (sucesso, dist);
}
);
}
public static int[,] LerMatriz(int n = 5) {
int[,] matriz = new int[n,n];
for (int i = 0; i < n; i++) {
for (int j = i+1; j < n; j++) {
int dist = LerDistancia(i.ParaUsuario(), j.ParaUsuario());
matriz[i,j] = dist;
matriz[j,i] = dist;
}
}
return matriz;
}
public static int[] LerPercurso(int n = 5) {
return Utils.LerArray(
() => {
Console.WriteLine($"Insira o percurso com as cidades separadas por espaço:");
string[] textoPercurso = (Console.ReadLine() ?? "").Split(" ");
return textoPercurso.Select(x => (int.TryParse(x, out int y) ? y : -1)).ToArray();
},
(int[] percurso) => {
return !percurso.Any(x => x <= 0 || x > n);
}
).ParaSistema();
}
}