Este es el codigo de mi calculadora para el proyecto de programaciónn 1 en la UNE.
/*
Copyright (c) &lt;2008> <copyright Jose Chafardet - Armando Briceño - Daniel Lucero>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
//##########################################################//
/* *
* Titulo: Calculadora 1.1.3.76 *
* Por: José Luis Chafardet Grimaldi, Armando Briceño y Daniel Lucero *
* Email: joseluis@chafardet.com - armando@tucaracas.com - lucerox@hotmail.com *
* Web: www.chafardet.com *
* Para: Programación 1 - Universidad Nueva Esparta *
* Fecha de inicio: Jueves 17 de Abril de 2008 *
* Ultima modificación: Lunes 28 de Abril de 2008 *
* Hora, vaya a ud a saber, tampoco soy tan ocioso! jaja. *
* */
//##########################################################//
#include <stdio .h>
/* Incluye la librerÃa math.h estandar de C */
#include <math .h>
/* Incluye la librerÃa conio2.h NO ESTANDAR de C*/
#include <conio2 .h>
// Define PI, duh!
#define PI 3.14159265
// Funcion recursiva para calcular el factorial de un numero
long long int factorial(long long int n)
{
// si n es menor que 0, retorna 0 (termina)
if (n < 0) return 0;
// o si, n mayor a 1 retorna n por la funcion misma en n menos 1
else if(n > 1) return n*factorial(n-1);
// retorna un valor para no terminar el programa.
return 1;
}
int calculadora() /* Declara la funcion calculadora */
{
/* < -- Cambia el color a verde claro (funcion de conio2.h) */
textcolor(LIGHTGREEN);
/* <-- Limpia la pantalla (funcion de conio2.h) */
clrscr();
/* <-- Declara las variables con tipo de datos double */
double numero1=0,numero2=0,resultado=0;
/* <-- declara las variables resultado2, numero,
potencia como enteros grandes */
long long int resultado2=0,numero=0,potencia=0;
int i; /* <-- declara la variable i como entero */
char c,ch; /* <-- Declara la variable c de tipo char */
/* Imprime el menu entero con cambios de color */
printf("\a");
printf("/-----------------------------------------------------------------------\\\n");
printf("| Calculadora de Jose Luis Chafardet, Armando Briceno y Daniel Lucero |\n");
printf("|\t\t Seleccione la operacion a realizar:\t\t\t|\n");
printf("|\t\t\t\t\t\t\t\t\t|\n");
printf("|\t\t\t [7][8][9] | [+]\t\t\t\t|\n");
printf("|\t\t\t [4][5][6] | [-]\t\t\t\t|\n");
printf("|\t\t\t [1][2][3] | [*]\t\t\t\t|\n");
printf("|\t\t\t [0] | [/]\t\t\t\t|\n");
printf("|\t\t\t [C][S][T][P][F]\t\t\t\t|\n");
printf("|\t\t\t\t\t\t\t\t\t|\n");
printf("|\t\t J L AA BBBB DDD L \t\t|\n");
printf("|\t\t J L A A B B D D L \t\t|\n");
printf("|\t\t J L --- AAAA BBBB --- D D L \t\t|\n");
printf("|\t\tJ J L A A B B D D L \t\t|\n");
printf("|\t\t JJJ LLLL A A BBBB DDD LLLL \t\t|\n");
printf("|\t\t\t\t\t\t\t\t\t|\n|\t ");
textcolor(YELLOW);
printf(" Suma -> S\t\tSeno -> Z\t\t");
textcolor(LIGHTGREEN);
printf("|\n|\t ");
textcolor(YELLOW);
printf(" Resta -> R\t\tCoseno -> C\t\t");
textcolor(LIGHTGREEN);
printf("|\n|\t ");
textcolor(YELLOW);
printf(" Multiplicacion -> M\t\tTangente -> T\t\t");
textcolor(LIGHTGREEN);
printf("|\n|\t ");
textcolor(YELLOW);
printf(" Division -> D\t\tPotencia -> P\t\t");
textcolor(LIGHTGREEN);
printf("|\n|\t ");
textcolor(YELLOW);
printf(" Porcentaje -> V\t\tReverso de '/. -> G\t\t");
textcolor(LIGHTGREEN);
printf("|\n|\t ");
textcolor(YELLOW);
printf(" Factorial -> F\t\tRaiz Cuadrada -> X\t\t");
textcolor(LIGHTGREEN);
printf("|\n|\t\t\t\t\t\t\t\t\t|\n|");
textcolor(YELLOW);
printf("\t\t\t Salir -> Q\t\t\t\t");
textcolor(LIGHTGREEN);
printf("|\n|\t\t\t\t\t\t\t\t\t|\n");
printf("|-----------------------------------------------------------------------|\n");
printf("|\t Instrucciones\t\t\t\t\t\t\t|\n");
printf("|\t\t\t\t\t\t\t\t\t|\n");
printf("|\t Introdusca los numeros, ya sea separados por un espacio o un\t|\n");
printf("|\t numero y enter y luego el 2do numero y enter\t\t\t|\n");
printf("\\-----------------------------------------------------------------------/\n");
textcolor(WHITE); /* Cambia el color a blanco (funcion de conio2.h) */
/* Imprime la primera linea para recibir opciones */
printf("\nSeleccione una operacion del menu: ");
/* Cambia el color a Amarillo (funcion de conio2.h) */
textcolor(YELLOW);
/* Pide el valor para c (la opcion del menu) */
scanf(" %c", &c);
textcolor(LIGHTMAGENTA);
/* Inicio del analisis de casos, para las operaciones de la calculadora */
switch (c)
{
/* Caso para sumar
* Este caso pide 2 numeros con scanf, luego los suma asignando el valor
* a la variable resultado
*/
case 'S':
case 's': Suma:
printf("\nIngrese dos numeros para sumarlos.\n");
printf("Numero 1: ");
textcolor(LIGHTRED);
/* Pide el valor para numero1 con scanf */
scanf("%lf", &numero1);
textcolor(LIGHTMAGENTA);
printf("Numero 2: ");
textcolor(LIGHTRED);
/* Pide el valor para numero2 con scanf */
scanf("%lf", &numero2);
resultado = numero1 + numero2;
textcolor(LIGHTMAGENTA);
break;
/* Caso para restar
* Este caso pide 2 numeros con scanf, luego los compara para analizar si el
* primero es mayor que el 2do, de ser asà hace la resta, de lo contrario
* termina el programa con un error.
*/
case 'R':
case 'r': Resta:
printf("\nIngrese dos numeros para restarlos.\n");
printf("Numero 1: ");
textcolor(LIGHTRED);
/* Pide el valor para numero1 con scanf */
scanf("%lf", &numero1);
textcolor(LIGHTMAGENTA);
printf("Numero 2: ");
textcolor(LIGHTRED);
/* Pide el valor para numero2 con scanf */
scanf("%lf", &numero2);
textcolor(LIGHTMAGENTA);
resultado = numero1 - numero2;
break;
/* Caso para multiplicar
* Este caso pide 2 numeros con scanf, luego los multiplica asignando el valor
* a la variable resultado
*/
case 'M':
case 'm': Multiplicacion:
printf("\nIngrese dos numeros para multiplicarlos.\n");
printf("Numero 1: ");
textcolor(LIGHTRED);
/* Pide el valor para numero1 con scanf */
scanf("%lf", &numero1);
textcolor(LIGHTMAGENTA);
printf("Numero 2: ");
textcolor(LIGHTRED);
/* Pide el valor para numero2 con scanf */
scanf("%lf", &numero2);
textcolor(LIGHTMAGENTA);
resultado = numero1 * numero2;
break;
/* Caso para dividir
* Este caso pide 2 numeros con scanf, luego los compara para analizar si el
* primero no es '0' o mayor que el 2do, de ser asà hace la division, de lo contrario
* termina el programa con un error.
*/
case 'D':
case 'd': Division:
printf("\nIngrese dos numeros para dividirlos.\n");
printf("Dividendo: ");
textcolor(LIGHTRED);
/* Pide el valor para numero1 con scanf */
scanf("%lf", &numero1);
textcolor(LIGHTMAGENTA);
printf("Divisor: ");
textcolor(LIGHTRED);
/* Pide el valor para numero2 con scanf */
scanf("%lf", &numero2);
textcolor(LIGHTMAGENTA);
/* Si el divisor es 0, imprime error */
if (numero2 == (double)0)
{
textcolor(LIGHTRED);
printf("\nEl Divisor no puede ser 0.\n");
system("pause");
return 1;
}
/* en vista al menos, si el dividendo y el divisor son iguales, me da resultado 0, por ello
se creo esta validación, para que si dividendo y divisor son iguales, imprima 1 */
/*else if (numero1 == numero2)
{
resultado = 1;
}
/* en cualquier otro caso, hace la operación de división */
else
{
resultado = numero1 / numero2;
}
break;
/* Caso para factorial
* Este caso pide 1 numero con scanf, luego le saca el factorial
*/
case 'F':
case 'f': Factorial:
printf("\nIngrese El numero al que le quiere calcular el factorial.\n");
printf("Numero: ");
textcolor(LIGHTRED);
/* Pide el valor para numero con scanf */
scanf("%llu", &numero);
if (numero < = 0)
{
textcolor(LIGHTRED);
printf("no hay factoriales negativos\n");
textcolor(WHITE);
system("pause");
return 1;
}
/* si no, hace la operación. */
else
{
textcolor(LIGHTMAGENTA);
resultado2=factorial(numero);
/* estoy usando la funcion externa recursiva factorial()
for(i = 1; i <= numero1; i++)
{
fact *= i;
}
resultado = (double)fact;
*/
break;
}
/* Caso para seno
* Este caso pide 1 numero con scanf, luego dentro de la funcion de math.h sin
* lo multiplica por PI y lo divide entre 180, para obtener el valor en grados
*/
case 'Z':
case 'z': Seno:
printf("\nIngrese el numero al que le desea calcular el seno.\n");
printf("Numero: ");
textcolor(LIGHTRED);
/* Pide el valor para numero1 con scanf */
scanf("%lf", &numero1);
textcolor(LIGHTMAGENTA);
/* el resultado de sin(numero1) da el numero en radianos, por lo tanto
hay que hacer un calculo para convertirlo a grados, este se hace
multiplicando por PI el numero y dividiendolo entre 180 */
resultado = sin((numero1 * PI) / 180);
break;
/* Caso para coseno
* Este caso pide 1 numero con scanf, luego dentro de la funcion de math.h cos
* lo multiplica por PI y lo divide entre 180, para obtener el valor en grados
*/
case 'C':
case 'c': Coseno:
printf("\nIngrese el numero al que quiere calcular el coseno.\n");
printf("Numero: ");
textcolor(LIGHTRED);
scanf("%lf", &numero1);
/* Pide el valor para numero1 con scanf */
textcolor(LIGHTMAGENTA);
/* el resultado de sin(numero1) da el numero en radianos, por lo tanto
hay que hacer un calculo para convertirlo a grados, este se hace
multiplicando por PI el numero y dividiendolo entre 180 */
resultado = cos((numero1 * PI) / 180);
break;
/* Caso para tangente
* Este caso pide 1 numero con scanf, luego dentro de la funcion de math.h tan
* lo multiplica por PI y lo divide entre 180, para obtener el valor en grados
*/
case 'T':
case 't': Tangente:
printf("\nIngrese el numero al que le quiere calcular la tangente.\n");
printf("Numero: ");
textcolor(LIGHTRED);
/* Pide el valor para numero1 con scanf */
scanf("%lf", &numero1);
textcolor(LIGHTMAGENTA);
if (numero1 == 90)
{
textcolor(LIGHTRED);
printf("La tangente de 90 tiende a infinito, seno de 90 entre coseno de 90 (90 / 0).\n");
system("pause");
return 1;
}
else
{
/* el resultado de sin(numero1) da el numero en radianos, por lo tanto
hay que hacer un calculo para convertirlo a grados, este se hace
multiplicando por PI el numero y dividiendolo entre 180 */
resultado = tan((numero1 * PI) / 180);
break;
}
/* Caso para seno
* Este caso pide 2 numeros con scanf, luego dentro de la funcion de math.h pow
* calcula la potencia
*/
case 'P':
case 'p': Potencia:
printf("\nIngrese los numeros para la potencia.\n");
printf("Numero: ");
textcolor(LIGHTRED);
/* Pide el valor para numero con scanf */
scanf("%llu", &numero);
textcolor(LIGHTMAGENTA);
printf("Potencia: ");
textcolor(LIGHTRED);
/* Pide el valor para potencia con scanf */
scanf("%llu", &potencia);
textcolor(LIGHTMAGENTA);
/* La funcion pow() de math.h recibe 2 valores, numero y potencia en base a esto
realiza la operación */
resultado2 = pow(numero, potencia);
break;
/* Caso para porcentajes
* Este caso pide 2 numeros con scanf, luego saca los calculos para determinar
* cuanto es el X porciento de Y.
*/
case 'V':
case 'v': Porcentaje:
printf("\nIngrese el numero al que le quiere calcular el porcentaje:\n");
textcolor(LIGHTMAGENTA);
printf("Numero: ");
textcolor(LIGHTRED);
/* Pide el valor para numero1 con scanf */
scanf("%lf", &numero1);
if (numero1 < 0)
{
textcolor(LIGHTRED);
printf("no hay porcentajes negativos\n");
textcolor(WHITE);
system("pause");
return 1;
}
/* si no, hace la operación. */
else
{
textcolor(LIGHTMAGENTA);
printf("Que porcentaje: ");
textcolor(LIGHTRED);
/* Pide el valor para numero2 con scanf */
scanf("%lf", &numero2);
if (numero2 < 0)
{
textcolor(LIGHTRED);
printf("no hay porcentajes negativos\n");
textcolor(WHITE);
system("pause");
return 1;
}
/* si no, hace la operación. */
else
{
/* sacar porcentajes, regla basica de 3, numero 1 por numero 2 entre 100 nos
da el resultado de el calculo para saber el porcentage de un numero */
resultado = (numero1 * numero2) / 100;
break;
}}
/* Caso para porcentajes invertido
* Este caso pide 2 numeros con scanf, luego saca los calculos para determinar
* cuanto porcentaje es X numero de Y.
*/
case 'G':
case 'g': PorcentajeReverso:
printf("\nIngrese el numero que quiere saber cuanto prciento es:\n");
textcolor(LIGHTMAGENTA);
printf("Numero: ");
textcolor(LIGHTRED);
/* Pide el valor para numero1 con scanf */
scanf("%lf", &numero1);
if (numero1 < 0)
{
textcolor(LIGHTRED);
printf("no hay porcentajes negativos\n");
textcolor(WHITE);
system("pause");
return 1;
}
/* si no, hace la operación. */
else
{
textcolor(LIGHTMAGENTA);
printf("de que numero: ");
textcolor(LIGHTRED);
scanf("%lf", &numero2);
if (numero2 < 0)
{
textcolor(LIGHTRED);
printf("no hay porcentajes negativos\n");
textcolor(WHITE);
system("pause");
return 1;
}
/* si no, hace la operación. */
else
{
/* sacar porcentajes, regla basica de 3, numero 1 por 100 entre numero 2 nos
da el resultado de el calculo para saber que porcentage de un numero es un valor x*/
resultado = (numero1 * 100) / numero2;
break;
}}
/* Caso para Raiz cuadrada
* Este caso pide 1 numero con scanf, luego saca la raiz cuadrada.
*/
case 'X':
case 'x': RaizCuadrada:
printf("\nIngrese el numero al que quiere sacarle la raiz cuadrada:\n");
printf("Numero: ");
textcolor(LIGHTRED);
scanf("%lf", &numero1);
textcolor(LIGHTMAGENTA);
/* Compara si el numero ingresado es menor o igual a 0, de ser asÃ, imprime error.*/
if (numero1 < 0)
{
textcolor(LIGHTRED);
printf("no hay raices negativas\n");
textcolor(WHITE);
system("pause");
return 1;
}
/* si no, hace la operación. */
else
{
/* la funcion sqrt() de math.h recibe 1 numero y lo procesa, dandonos la raiz cuadrada */
resultado = sqrt(numero1);
}
break;
/* Caso para cerrar
* Este caso pide 1 letra, q, para cerrar el programa
*/
case 'Q':
case 'q':
return 0;
textcolor(WHITE);
break;
/* Caso para licencia
* Este caso solo imprime la licencia del programa (MIT)
*/
case 'o':
case 'O': Licencia:
clrscr();
textcolor(LIGHTRED);
printf("\nCopyright (c) &lt;2008> <jose Chafardet - Armando Briceño - Daniel Lucero> ");
printf("\nPermission is hereby granted, free of charge, to any person obtaining a copy ");
printf("\nof this software and associated documentation files (the \"Software\"), to deal");
printf("\nin the Software without restriction, including without limitation the rights");
printf("\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell");
printf("\ncopies of the Software, and to permit persons to whom the Software is");
printf("\nfurnished to do so, subject to the following conditions:\n");
printf("\nThe above copyright notice and this permission notice shall be included in");
printf("\nall copies or substantial portions of the Software.\n");
printf("\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR");
printf("\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,");
printf("\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE");
printf("\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER");
printf("\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,");
printf("\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN");
printf("\nTHE SOFTWARE.\n\n");
textcolor(WHITE);
printf("\nDesarrollado usando Dev-C++ 4.9.9.2 en C estandar\n");
printf("\nProyecto Segundo corte, Programacion 1 - UNE");
printf("\nAbril de 2008\n");
printf("\nPor:\n");
printf("\nJose Luis Chafardet Grimaldi");
textcolor(LIGHTGREEN);
printf("\njoseluis@chafardet.com");
printf("\nhttp://www.chafardet.com\n\n");
textcolor(WHITE);
printf("\nArmando Briceno Monzonis");
textcolor(LIGHTGREEN);
printf("\narmando@tucaracas.com.com\n\n");
textcolor(WHITE);
printf("\nDaniel Lucero");
textcolor(LIGHTGREEN);
printf("\nlucerox@hotmail.com.com");
printf("\nhttp://www.lucerox.com\n\n");
textcolor(WHITE);
break;
}
/*
* aquà se imprime el resultado en pantalla.
*/
/* Si el valor asignado a la variable c es "o" pausa y no muestra el cuadro de resultados para imprimir la licencia*/
if (c == 'o' || c == 'O')
{
system("pause");
return 1;
}
else
{
textcolor(WHITE);
printf("\n/-------------------------------\\\n");
printf("| Resultado: \t\t\t|\n");
printf("|");
textcolor(LIGHTRED);
/* si el resultado2 es diferente a 0, imprime resultado2 */
if (resultado2 != 0){
printf(" %llu", resultado2);
}
/* si no, imprime resultado */
else
{
/* para farle formato al numero, antes del tipo de datos, se especifican ciertos parametros
Ejemplo:
printf( "%10f", valor); imprime un numero de 10 posiciones para la variable valor
printf(".xf", valor); imprime x cantidad de decimales para la variable valor
*/
printf(" %.2lf",resultado);
}
textcolor(WHITE);
printf(" \t\t\t|\n");
printf("\\-------------------------------/\n");
printf("\a");
system("pause");
return 1;
}
/* Si el valor asignado a la variable c es "q" termina el programa */
if (c == 'q' || ch == 'Q')
{
return 0;
}
/* si no, retorna 1 al sistema */
else
{
return 1;
}
}
// Funcion principal, llama a la funcion calculadora
int main(int argc, char *argv[])
{
// mientras el "return" sea diferente a 0, se reinicia, de lo contrario termina
while ( calculadora() != 0)
;
return 0;
}
/*
TO-DO:
*. validar que solo se reciban numeros en los datos de las operaciones
*. validar que solo se reciban letras en el menu
*/
/*
REGISTRO DE CAMBIOS:
Esto lo inclui ya tarde, pero me parece vale la pena tenerlo.
05/05/2008:
*arreglos cosmeticos de texto.
29/04/2008:
*Implementación de validaciones para raiz cuadrada
*Implementación de validaciones para porcentajes
*Implementación de limitador de decimales en resultado
para solo mostrar 2 decimales.
28/04/2008:
*Implementación de ciclo para no cerrar la calculadora
al terminar una operacion, aún tiene fallas.
*Implementación de opcion oculta, para mostrar licencia "o"
20/04/2008:
*Cambios cosmeticos, mejoras de color
*creacion de funciones vacias para validacion
*intento no muy exitoso de manejo de posiciones para
la impresion de el programa, comentadas las lineas para
no borrarlas.
*Modificacion de valores de version del proyecto en Dev-C++
19/04/2008:
*Comienzo de implementacion de GUI
*Comienzo de investigacion para aplicar color al programa
*Implementacion de sonidos
*Implementacion de colores
*Comentado completo del programa
18/04/2008:
*Finalizacion del proveso de programacion:
*Completado de funciones para:
Seno, Coseno, Tangente, Potencia
*Implementacion de funciones comentadas para:
Valor Absoluto y Raiz cuadrada.
17/04/2008:
*Incio del proceso de programacion
*Completadas operaciones simples:
suma, resta, multiplicacion y division
*/


hola , como haces para que el source se vea bien en tu blog ??? , uso el mismo pluggin que tu pero cuando pongo el source los “#include ” me aparece “#include” y en “printf (“\nHola”);” aparece “printf (“nHola”);”
Gracias
es dificil saber, estas usando la sintaxis correcta? honestamente no te sabria decir si es un tema de que la sintaxis que estas empleando para incluir codigo esta bien o no, necesitaria ver como posteas.
usas la sintaxis correcta para hacer eso?
recuerda debes arrancar todo el codigo con <pre class=”LENGUAJE-AQUI”> y cerrar con</pre>
lee la guia de uso: http://alexgorbatchev.com/wiki/SyntaxHighlighter
hola nesesito el codigo de una calculadora de funciones matematic en c++ o C es este codigo el mismo o solo hay que aserle algun cambio para que funcione como una calculadora de funciones ?