Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //programa que va simular ser una calculadora cientifica con operaciones
- #include <iostream>
- #include <stdio.h>
- #include <math.h> // Para las funciones matemáticas
- #include <stdlib.h> // Para la función salir
- #include <conio.h>
- #include <windows.h> // Para la función gotoxy
- //constantes del teclado que va aceptar el programa
- #define ESC 27 // Tecla Escape
- #define BKSP 55 // Tecla de backspace
- #define Otro 44 // Cualquier otra tecla
- // Teclas numéricas del '0' al '9'
- #define num 33
- // Definiciones para operadores y otros caracteres
- #define suma 43 // Tecla '+'
- #define resta 45 // Tecla '-'
- #define multiplicacion 42 // Tecla '*'
- #define division 47 // Tecla '/'
- #define punto 46 // Tecla '.'
- // Definiciones para letras
- #define S 83 // Tecla 'seno'
- #define s 115 // Tecla 'seno'
- #define C 67 // Tecla 'Coseno'
- #define c 99 // Tecla 'coseno'
- #define T 84 // Tecla 'Tangente'
- #define t 116 // Tecla 'tangente'
- #define Q 81 // Tecla 'potencia al cuadrado'
- #define q 113 // Tecla 'potencia al cuadrado'
- #define W 87 // Tecla 'potencia al cubo'
- #define w 119 // Tecla 'potencian al cubo'
- #define R 82 // Tecla 'potencia a n '
- #define r 114 // Tecla 'potencia a n'
- #define O 79 // Tecla 'logaritmo base 10'
- #define o 111 // Tecla 'logaritmo base 10'
- #define N 78 // Tecla 'logaritmo natural'
- #define n 110 // Tecla 'logaritmo natural'
- #define E 69 // Tecla 'logaritmo exponencial'
- #define e 101 // Tecla 'logaritmo exponencial'
- using namespace std;
- // Función para mover a una posición específica de la consola
- void gotoxy(int x, int y) {
- COORD coord;
- coord.X = x;
- coord.Y = y;
- SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
- }
- // Función para dibujar la calculadora
- void dibujaCalculadora() {
- // Dibuja el marco superior de la pantalla
- gotoxy(50, 5); printf("%c", 218); // Esquina superior izquierda
- for (int i = 1; i < 28; i++) printf("%c", 196); // Línea horizontal superior
- printf("%c", 191); // Esquina superior derecha
- // Lados de la pantalla
- for (int i = 6; i < 8; i++) {
- gotoxy(50, i); printf("%c", 179); // Lado izquierdo
- gotoxy(78, i); printf("%c", 179); // Lado derecho
- }
- // Dibuja el marco inferior de la pantalla
- gotoxy(50, 8); printf("%c", 192); // Esquina inferior izquierda
- for (int i = 1; i < 28; i++) printf("%c", 196); // Línea horizontal inferior
- printf("%c", 217); // Esquina inferior derecha
- // Dibuja el área de los botones
- int startX = 52;
- int startY = 10;
- const char *botones[] = {
- "SEN", "COS", "TAG", "7", "8", "9", "DEL", "AC",
- "^2", "^3", "x^n", "4", "5", "6", "X", "/",
- "Log", "ln", "e^x", "1", "2", "3", "+", "-",
- "D", "B", "0", "+/-", ".", "="
- };
- int botonIndex = 0;
- for (int fila = 0; fila < 5; fila++) {
- for (int col = 0; col < 8; col++) {
- if (fila == 4 && col > 5) continue; // Última fila con solo 6 botones
- // Dibuja los bordes de cada botón
- gotoxy(startX + col * 4, startY + fila * 2); printf("%c%c%c%c", 218, 196, 196, 191);
- gotoxy(startX + col * 4, startY + fila * 2 + 1); printf("%c%s%c", 179, botones[botonIndex], 179);
- gotoxy(startX + col * 4, startY + fila * 2 + 2); printf("%c%c%c%c", 192, 196, 196, 217);
- botonIndex++;
- }
- }
- }
- //conversion decimal a binario
- void decimalABinario(int numero) {
- if (numero == 0) {
- printf("0");
- return;
- }
- int binario[32]; // Arreglo para almacenar los dígitos binarios el maximo es 32
- int i = 0;
- while (numero > 0) {
- binario[i] = numero % 2; // Obtener el resto al dividir por 2
- numero = numero / 2; // Dividir el número por 2 para seguir con la conversión.
- i++;
- }
- // imprime el numero binario de abajo ah arriba
- for (int j = i - 1; j >= 0; j--) {
- printf("%d", binario[j]);
- }
- }
- // conversion binario a decimal
- int binarioADecimal(int binario) {
- int decimal = 0, base = 1, resto;
- while (binario > 0) {
- resto = binario % 10; // Obtener el último dígito binario.
- decimal = decimal + resto * base; // Acumular el valor decimal.
- binario = binario / 10; // Eliminar el último dígito binario.
- base = base * 2; // Aumentar la base (potencias de 2).
- }
- return decimal;
- }
- // Suma
- void sumar(int a, int z) {
- int resultado = a + z;
- printf("Resultado en binario: ");
- decimalABinario(resultado); // Convertir y mostrar el resultado en binario
- printf("\n");
- }
- // Resta
- void restar(int a, int z) {
- int resultado = a - z;
- printf("Resultado en binario: ");
- decimalABinario(resultado); // Convertir y mostrar el resultado en binario
- printf("\n");
- }
- // Multiplicación
- void multiplicar(int a, int z) {
- int resultado = a * z;
- printf("Resultado en binario: ");
- decimalABinario(resultado); // Convertir y mostrar el resultado en binario
- printf("\n");
- }
- // División
- void dividir(int a, int z) {
- if (z == 0) { // Verificar si el dives cero
- printf("Error1 \n");
- return;
- }
- int resultado = a / z;
- printf("Resultado en binario: ");
- decimalABinario(resultado); // Convertir y mostrar el resultado en binario
- printf("\n");
- }
- // Función para convertir grados a radianes
- double convertir_a_radianes(int grados) {
- return grados * (M_PI / 180.0);
- }
- // Función para calcular el seno
- double calcular_seno(int a) {
- double radianes = convertir_a_radianes(a);
- int resultado= sin(radianes); // Retorna el seno en radianes
- return resultado;
- }
- // Función para calcular el coseno
- double calcular_coseno(int a) {
- double radianes = convertir_a_radianes(a);
- int resultado= cos(radianes);// Retorna el coseno en radianes
- return resultado;
- }
- // Función para calcular la tangente
- double calcular_tangente(int a) {
- double radianes = convertir_a_radianes(a);
- int resultado= tan(radianes);// Retorna la tangente en radianes
- return resultado;
- }
- //funcion de potencia al cuadrado
- double calcular_cuadrado(int a) {
- int resultado= pow(a, 2);// Calcular el cuadrado de a
- return resultado;
- }
- //funcion de potencia al cubo
- double calcular_cubo(int a){
- int resultado= pow (a,3);// calcula el cubo de a
- return resultado;
- }
- //funcion de potencia a la n
- double calcular_n (int a ,int z){
- int resultado= pow(a,z); //calcula el n de a
- return resultado;
- }
- //funcion en base 10
- double base_10(int a) {
- int resultado= log10(a);
- return resultado;
- }
- //funcion de logaritmo natural
- double logaritmo_natural(double a){
- int resultado= log(a);
- return resultado;
- }
- //funcion e^x
- double ex(int a) {
- // Usamos la constante M_E de la libreria math.h que es la representante de e^x
- int resultado= pow(M_E, a);
- return resultado;
- }
- // Funcion que evalua un caracter para saber si es un digito o son los operadores como +,-,/,* entre otros
- // salida ESC o el borrar Backspace que se usaran para regresar una constante declarada
- int Evalua(int tecla)
- {
- if (tecla == 27)
- return ESC;
- if ((tecla >= 48) && (tecla <= 57))
- return num;
- if (tecla==43)
- return suma;
- if (tecla==45)
- return resta;
- if (tecla==42)
- return multiplicacion;
- if (tecla==47)
- return division;
- if (tecla==46)
- return punto;
- if ((tecla==83)&&(tecla==115))
- return S;
- if ((tecla==67)&&(tecla==99))
- return C;
- if ((tecla==84)&&(tecla==116))
- return T;
- if ((tecla==81)&&(tecla==113))
- return Q;
- if ((tecla==87)&&(tecla==119))
- return R;
- if ((tecla==79)&&(tecla==111))
- return O;
- if ((tecla==78)&&(tecla==110))
- return N;
- if ((tecla==69)&&(tecla==101))
- return E;
- if (tecla == 8)
- return BKSP;
- else return Otro;
- }
- int main() {
- dibujaCalculadora();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement