-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.ts
133 lines (119 loc) · 3.59 KB
/
index.ts
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import * as readline from 'readline';
import { Calculeitor } from './calculador/calculetor';
// Home
function printMenu() {
console.log("=== Calculadora ===");
console.log("1. Suma");
console.log("2. Resta");
console.log("3. División");
console.log("4. Multiplicación");
console.log("5. Exponencial");
console.log("6. Raíz cuadrada");
console.log("0. Salir");
}
// Conexión
function createInterface() {
return readline.createInterface({
input: process.stdin,
output: process.stdout
});
}
// Lectura de parámetros
function readNumbers(): Promise<number[]> {
return new Promise<number[]>(async (resolve) => {
const rl = createInterface();
rl.question("Ingresa los números separados por espacios: ", (input: string) => {
rl.close();
const numbers = input.split(" ").map(Number);
resolve(numbers);
});
});
}
function waitForKey(): Promise<void> {
return new Promise<void>(async (resolve) => {
const rl = createInterface();
rl.question("Presiona cualquier tecla para continuar...", () => {
rl.close();
resolve();
});
});
}
function readNumber(name: string): Promise<string> {
const txt = name;
return new Promise<string>(async (resolve) => {
const rl = createInterface();
rl.question(txt, (input: string | PromiseLike<string>) => {
rl.close();
resolve(input);
});
});
}
// Función calculadora
async function calculate() {
// Variables globales
const calc = new Calculeitor();
let option = -1;
while (option !== 0) {
// Home
printMenu();
// Primera pregunta
option = parseInt(await readNumber("Ingresa una opción: "));
// Opción
switch (option) {
case 1: {
const numbers: number[] = await readNumbers();
const result = calc.suma(numbers);
console.log(`El resultado de la suma es: ${result}`);
await waitForKey();
break;
}
case 2: {
const number = await readNumber("Ingresa el primer número: ");
const numbers: number[] = await readNumbers();
const result = calc.resta(parseFloat(number), numbers);
console.log(`El resultado de la resta es: ${result}`);
await waitForKey();
break;
}
case 3: {
const numberi = parseInt(await readNumber("Ingresa el dividendo: "));
const numberb = parseInt(await readNumber("Ingresa el divisor: "));
const result = calc.division(numberi, numberb);
console.log(`El resultado de la división es: ${result}`);
await waitForKey();
break;
}
case 4: {
const numbers: number[] = await readNumbers();
const result = calc.multiplicacion(numbers);
console.log(`El resultado de la multiplicación es: ${result}`);
await waitForKey();
break;
}
case 5: {
const number = parseInt(await readNumber("Ingresa el número base: "));
const exponente = parseInt(await readNumber("Ingresa el exponente: "));
const result = calc.potencia(number, exponente);
console.log(`El resultado de la exponenciación es: ${result}`);
await waitForKey();
break;
}
case 6: {
const numero = parseInt(await readNumber("Ingresa el número: "));
const result = calc.raiz(numero);
console.log(`La raíz cuadrada es: ${result}`);
await waitForKey();
break;
}
case 0: {
console.log("Saliendo de la calculadora...");
break;
}
default: {
console.log("Opción inválida. Inténtalo de nuevo.");
break;
}
}
}
}
calculate();