Advertisement
Uufuuf

Code

Sep 19th, 2024 (edited)
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.32 KB | Source Code | 0 0
  1. //programa que va simular ser una calculadora cientifica con operaciones
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <math.h> // Para las funciones matemáticas
  5. #include <stdlib.h> // Para la función salir
  6. #include <conio.h>
  7. #include <windows.h> // Para la función gotoxy
  8.  
  9. //constantes del teclado que va aceptar el programa
  10. #define ESC 27 // Tecla Escape
  11. #define BKSP 55 // Tecla de backspace
  12. #define Otro 44 // Cualquier otra tecla
  13.  
  14. // Teclas numéricas del '0' al '9'
  15. #define num 33
  16.  
  17. // Definiciones para operadores y otros caracteres
  18. #define suma 43 // Tecla '+'
  19. #define resta 45 // Tecla '-'
  20. #define multiplicacion 42 // Tecla '*'
  21. #define division 47 // Tecla '/'
  22. #define punto 46 // Tecla '.'
  23.  
  24. // Definiciones para letras
  25. #define S 83 // Tecla 'seno'
  26. #define s 115 // Tecla 'seno'
  27. #define C 67 // Tecla 'Coseno'
  28. #define c 99 // Tecla 'coseno'
  29. #define T 84 // Tecla 'Tangente'
  30. #define t 116 // Tecla 'tangente'
  31. #define Q 81 // Tecla 'potencia al cuadrado'
  32. #define q 113 // Tecla 'potencia al cuadrado'
  33. #define W 87 // Tecla 'potencia al cubo'
  34. #define w 119 // Tecla 'potencian al cubo'
  35. #define R 82 // Tecla 'potencia a n '
  36. #define r 114 // Tecla 'potencia a n'
  37. #define O 79 // Tecla 'logaritmo base 10'
  38. #define o 111 // Tecla 'logaritmo base 10'
  39. #define N 78 // Tecla 'logaritmo natural'
  40. #define n 110 // Tecla 'logaritmo natural'
  41. #define E 69 // Tecla 'logaritmo exponencial'
  42. #define e 101 // Tecla 'logaritmo exponencial'
  43.  
  44. using namespace std;
  45. // Función para mover a una posición específica de la consola
  46. void gotoxy(int x, int y) {
  47. COORD coord;
  48. coord.X = x;
  49. coord.Y = y;
  50. SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
  51. }
  52.  
  53. // Función para dibujar la calculadora
  54. void dibujaCalculadora() {
  55. // Dibuja el marco superior de la pantalla
  56. gotoxy(50, 5); printf("%c", 218); // Esquina superior izquierda
  57. for (int i = 1; i < 28; i++) printf("%c", 196); // Línea horizontal superior
  58. printf("%c", 191); // Esquina superior derecha
  59.  
  60. // Lados de la pantalla
  61. for (int i = 6; i < 8; i++) {
  62. gotoxy(50, i); printf("%c", 179); // Lado izquierdo
  63. gotoxy(78, i); printf("%c", 179); // Lado derecho
  64. }
  65.  
  66. // Dibuja el marco inferior de la pantalla
  67. gotoxy(50, 8); printf("%c", 192); // Esquina inferior izquierda
  68. for (int i = 1; i < 28; i++) printf("%c", 196); // Línea horizontal inferior
  69. printf("%c", 217); // Esquina inferior derecha
  70.  
  71. // Dibuja el área de los botones
  72. int startX = 52;
  73. int startY = 10;
  74. const char *botones[] = {
  75. "SEN", "COS", "TAG", "7", "8", "9", "DEL", "AC",
  76. "^2", "^3", "x^n", "4", "5", "6", "X", "/",
  77. "Log", "ln", "e^x", "1", "2", "3", "+", "-",
  78. "D", "B", "0", "+/-", ".", "="
  79. };
  80.  
  81. int botonIndex = 0;
  82. for (int fila = 0; fila < 5; fila++) {
  83. for (int col = 0; col < 8; col++) {
  84. if (fila == 4 && col > 5) continue; // Última fila con solo 6 botones
  85.  
  86. // Dibuja los bordes de cada botón
  87. gotoxy(startX + col * 4, startY + fila * 2); printf("%c%c%c%c", 218, 196, 196, 191);
  88. gotoxy(startX + col * 4, startY + fila * 2 + 1); printf("%c%s%c", 179, botones[botonIndex], 179);
  89. gotoxy(startX + col * 4, startY + fila * 2 + 2); printf("%c%c%c%c", 192, 196, 196, 217);
  90.  
  91. botonIndex++;
  92. }
  93. }
  94. }
  95. //conversion decimal a binario
  96. void decimalABinario(int numero) {
  97. if (numero == 0) {
  98. printf("0");
  99. return;
  100. }
  101.  
  102. int binario[32]; // Arreglo para almacenar los dígitos binarios el maximo es 32
  103. int i = 0;
  104.  
  105. while (numero > 0) {
  106. binario[i] = numero % 2; // Obtener el resto al dividir por 2
  107. numero = numero / 2; // Dividir el número por 2 para seguir con la conversión.
  108. i++;
  109. }
  110.  
  111. // imprime el numero binario de abajo ah arriba
  112. for (int j = i - 1; j >= 0; j--) {
  113. printf("%d", binario[j]);
  114. }
  115. }
  116.  
  117. // conversion binario a decimal
  118. int binarioADecimal(int binario) {
  119. int decimal = 0, base = 1, resto;
  120.  
  121. while (binario > 0) {
  122. resto = binario % 10; // Obtener el último dígito binario.
  123. decimal = decimal + resto * base; // Acumular el valor decimal.
  124. binario = binario / 10; // Eliminar el último dígito binario.
  125. base = base * 2; // Aumentar la base (potencias de 2).
  126. }
  127.  
  128. return decimal;
  129. }
  130.  
  131. // Suma
  132. void sumar(int a, int z) {
  133. int resultado = a + z;
  134. printf("Resultado en binario: ");
  135. decimalABinario(resultado); // Convertir y mostrar el resultado en binario
  136. printf("\n");
  137. }
  138.  
  139. // Resta
  140. void restar(int a, int z) {
  141. int resultado = a - z;
  142. printf("Resultado en binario: ");
  143. decimalABinario(resultado); // Convertir y mostrar el resultado en binario
  144. printf("\n");
  145. }
  146.  
  147. // Multiplicación
  148. void multiplicar(int a, int z) {
  149. int resultado = a * z;
  150. printf("Resultado en binario: ");
  151. decimalABinario(resultado); // Convertir y mostrar el resultado en binario
  152. printf("\n");
  153. }
  154.  
  155. // División
  156. void dividir(int a, int z) {
  157. if (z == 0) { // Verificar si el dives cero
  158. printf("Error1 \n");
  159. return;
  160. }
  161. int resultado = a / z;
  162. printf("Resultado en binario: ");
  163. decimalABinario(resultado); // Convertir y mostrar el resultado en binario
  164. printf("\n");
  165. }
  166.  
  167. // Función para convertir grados a radianes
  168. double convertir_a_radianes(int grados) {
  169. return grados * (M_PI / 180.0);
  170. }
  171.  
  172. // Función para calcular el seno
  173. double calcular_seno(int a) {
  174. double radianes = convertir_a_radianes(a);
  175. int resultado= sin(radianes); // Retorna el seno en radianes
  176. return resultado;
  177.  
  178. }
  179.  
  180. // Función para calcular el coseno
  181. double calcular_coseno(int a) {
  182. double radianes = convertir_a_radianes(a);
  183. int resultado= cos(radianes);// Retorna el coseno en radianes
  184. return resultado;
  185. }
  186.  
  187.  
  188. // Función para calcular la tangente
  189. double calcular_tangente(int a) {
  190. double radianes = convertir_a_radianes(a);
  191. int resultado= tan(radianes);// Retorna la tangente en radianes
  192. return resultado;
  193. }
  194.  
  195. //funcion de potencia al cuadrado
  196. double calcular_cuadrado(int a) {
  197. int resultado= pow(a, 2);// Calcular el cuadrado de a
  198. return resultado;
  199. }
  200.  
  201. //funcion de potencia al cubo
  202. double calcular_cubo(int a){
  203. int resultado= pow (a,3);// calcula el cubo de a
  204. return resultado;
  205. }
  206. //funcion de potencia a la n
  207. double calcular_n (int a ,int z){
  208. int resultado= pow(a,z); //calcula el n de a
  209. return resultado;
  210. }
  211. //funcion en base 10
  212. double base_10(int a) {
  213. int resultado= log10(a);
  214. return resultado;
  215. }
  216. //funcion de logaritmo natural
  217. double logaritmo_natural(double a){
  218. int resultado= log(a);
  219. return resultado;
  220. }
  221. //funcion e^x
  222. double ex(int a) {
  223. // Usamos la constante M_E de la libreria math.h que es la representante de e^x
  224. int resultado= pow(M_E, a);
  225. return resultado;
  226. }
  227.  
  228. // Funcion que evalua un caracter para saber si es un digito o son los operadores como +,-,/,* entre otros
  229. // salida ESC o el borrar Backspace que se usaran para regresar una constante declarada
  230. int Evalua(int tecla)
  231. {
  232. if (tecla == 27)
  233. return ESC;
  234. if ((tecla >= 48) && (tecla <= 57))
  235. return num;
  236. if (tecla==43)
  237. return suma;
  238. if (tecla==45)
  239. return resta;
  240. if (tecla==42)
  241. return multiplicacion;
  242. if (tecla==47)
  243. return division;
  244. if (tecla==46)
  245. return punto;
  246. if ((tecla==83)&&(tecla==115))
  247. return S;
  248. if ((tecla==67)&&(tecla==99))
  249. return C;
  250. if ((tecla==84)&&(tecla==116))
  251. return T;
  252. if ((tecla==81)&&(tecla==113))
  253. return Q;
  254. if ((tecla==87)&&(tecla==119))
  255. return R;
  256. if ((tecla==79)&&(tecla==111))
  257. return O;
  258. if ((tecla==78)&&(tecla==110))
  259. return N;
  260. if ((tecla==69)&&(tecla==101))
  261. return E;
  262. if (tecla == 8)
  263. return BKSP;
  264. else return Otro;
  265. }
  266.  
  267. int main() {
  268. dibujaCalculadora();
  269. }
Tags: coding
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement