-
Notifications
You must be signed in to change notification settings - Fork 0
/
Program.cs
107 lines (93 loc) · 4.1 KB
/
Program.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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
using System;
namespace Calculator{
class Program {
delegate int Del(string[] nums);
static void Main(string[] args){
Console.Clear();
Console.WriteLine("Iniciando Calculadora...");
var ins = delegate(char s) {
return "\nInsira o valor separado por sinais ex: 5"+s+"1"+s+"2"+s+"4";
};
var sinais = new char[] {
'+', '-', '*', '/'
};
string historico = "";
var optNum = -1;
do {
var opt = Menu(historico);
if (opt != null){
try {
optNum = int.Parse(opt);
} catch (System.Exception) { Console.Clear(); OptError(); continue; }
if (optNum >= 0 && optNum < sinais.Length){
Console.WriteLine(ins(sinais[optNum]));
var read = Console.ReadLine();
var nums = read?.Split(sinais[optNum]);
if (nums != null){
try {
var result = GetOpt(optNum, nums);
Console.WriteLine("\nE o resultado é: "+result);
historico += read+" = "+result+"\n";
} catch (System.Exception) {
Console.WriteLine("Expressão inválida para esta opção...\n");
}
} else Console.WriteLine("\nO sinal de "+ sinais[optNum] +" não encontrado na expressão.");
} else OptError();
} else OptError();
Console.Write("\nDeseja continuar? (S/N) ");
if (Console.ReadLine()?.ToUpper() == "N") {
Console.WriteLine("\nResultado final:\n {"+historico+"\n}");
Console.WriteLine("\n\nCriado por Érik Freitas (erikfritas)");
break;
} else {
Console.Clear();
Console.WriteLine("Continuando...\n");
}
} while (true);
}
static string? Menu(string hist) {
Console.WriteLine("Histórico:\n"+hist);
Console.WriteLine("Escolha uma opção: ");
Console.WriteLine("(0) Soma");
Console.WriteLine("(1) Subtração");
Console.WriteLine("(2) Multiplicação");
Console.Write("(3) Divisão\n-> ");
return Console.ReadLine();
}
static void OptError() {
Console.WriteLine("\nOpção inexistente...");
}
static int GetOpt(int opt, string[] nums) {
return new Del[4] {
delegate(string[] nums){ // Soma
var num = int.Parse(nums[0]);
for (int i = 1; i < nums?.GetLength(0); i++) {
num += int.Parse(nums[i]);
}
return num;
},
delegate(string[] nums){ // Subtração
var num = int.Parse(nums[0]);
for (int i = 1; i < nums?.GetLength(0); i++) {
num -= int.Parse(nums[i]);
}
return num;
},
delegate(string[] nums){ // Multiplicação
var num = int.Parse(nums[0]);
for (int i = 1; i < nums?.GetLength(0); i++) {
num *= int.Parse(nums[i]);
}
return num;
},
delegate(string[] nums){ // Divisão
var num = int.Parse(nums[0]);
for (int i = 1; i < nums?.GetLength(0); i++) {
num /= int.Parse(nums[i]);
}
return num;
}
}[opt](nums);
}
}
}