elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Calculadora hecha en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Calculadora hecha en C  (Leído 9,719 veces)
Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Calculadora hecha en C
« en: 20 Octubre 2012, 18:44 pm »

Pues acabo de terminar esta calculadora y queria vuestra opinion, algunas cosas mas que le pueda implementar,si encontrais algun fallo, etc

Aqui os dejo el codigo:

main.c
Código
  1. #include <stdio.h>
  2. #include "funciones.h"
  3.  
  4. int main() {
  5.  
  6. int op;
  7.  
  8. do {
  9.  
  10. imprimir_menu();
  11.  
  12.  
  13. scanf("%d", &op);
  14. while (getchar() != '\n')
  15. ;
  16. system("cls");
  17. switch (op) {
  18.  
  19. case 1:
  20. sumar();
  21. break;
  22.  
  23. case 2:
  24. restar();
  25. break;
  26.  
  27. case 3:
  28. multiplicar();
  29. break;
  30.  
  31. case 4:
  32. dividir();
  33. break;
  34.  
  35. case 5:
  36. potencia();
  37. break;
  38.  
  39. case 6:
  40. raiz_cuadrada();
  41. break;
  42.  
  43. case 7:
  44. seno();
  45. break;
  46.  
  47. case 8:
  48. coseno();
  49. break;
  50.  
  51. case 9:
  52. tangente();
  53. break;
  54.  
  55. case 10:
  56. break;
  57.  
  58. default:
  59. printf("Ha elejido una opcion incorrecta\n");
  60. break;
  61. }//fin del switch
  62.  
  63. }while (op != 10);
  64.  
  65. return 0;
  66. }

funciones.h
Código
  1. #include <math.h> //para potencia y raiz cuadrada
  2.  
  3. void imprimir_menu(void) {
  4. system("cls"); //limpia la pantalla al volverse a ejecutar el do-while del archivo main.c
  5. printf("Elija una opcion:\n\n");
  6. printf("*********************************\n");
  7. printf("*\t [1] Sumar\t\t*\n");
  8. printf("*\t [2] Restar\t\t*\n");
  9. printf("*\t [3] Multiplicar\t*\n");
  10. printf("*\t [4] Dividir\t\t*\n");
  11. printf("*\t [5] Potencia\t\t*\n");
  12. printf("*\t [6] Raiz cuadrada\t*\n");
  13. printf("*\t [7] Seno\t\t*\n");
  14. printf("*\t [8] Coseno\t\t*\n");
  15. printf("*\t [9] Tangente\t\t*\n");
  16. printf("*\t [10] Salir\t\t*\n");
  17. printf("*********************************\n\n");
  18. return;
  19. }
  20.  
  21.  
  22.  
  23. void sumar(void) {
  24. double num1, num2;
  25. printf("\nIntroduzca los dos numeros a sumar: \n");
  26. scanf("%lf %lf", &num1, &num2);
  27. while (getchar() != '\n')
  28. ;
  29. printf("\n%lf", num1 + num2);
  30. return;
  31.  
  32.  
  33. }
  34.  
  35. void restar(void) {
  36. double num1, num2;
  37. printf("\nIntroduzca los dos numeros a restar: \n");
  38. scanf("%lf %lf", &num1, &num2);
  39. while (getchar() != '\n')
  40. ;
  41. printf("\n%lf", num1 - num2);
  42. return;
  43.  
  44.  
  45. }
  46.  
  47. void multiplicar(void) {
  48. double num1, num2;
  49. printf("\nIntroduzca los dos numeros a multiplicar: \n");
  50. scanf("%lf %lf", &num1, &num2);
  51. while (getchar() != '\n')
  52. ;
  53. printf("\n%lf", num1 * num2);
  54. return;
  55.  
  56.  
  57. }
  58.  
  59. void dividir(void) {
  60. double num1, num2;
  61. printf("\nIntroduzca los dos numeros a dividir: \n");
  62. scanf("%lf %lf", &num1, &num2);
  63. while (getchar() != '\n')
  64. ;
  65. printf("\n%lf", num1 / num2);
  66. return;
  67.  
  68.  
  69. }
  70.  
  71. void potencia(void) {
  72. double num1, num2;
  73. printf("\nIntroduzca la base: \n");
  74. scanf("%lf", &num1);
  75. while (getchar() != '\n')
  76. ;
  77. printf("Introduzca el exponente: \n");
  78. scanf("%lf", &num2);
  79. while (getchar() != '\n')
  80. ;
  81. printf("\n%lf", pow(num1, num2));
  82. return;
  83.  
  84.  
  85. }
  86.  
  87. void raiz_cuadrada(void) {
  88. double num1;
  89. printf("\nIntroduzca el numero: \n");
  90. scanf("%lf", &num1);
  91. while (getchar() != '\n')
  92. ;
  93. printf("La raiz cuadrada es: %lf \n", sqrt(num1));
  94.  
  95. return;
  96.  
  97.  
  98. }
  99.  
  100. void seno(void) {
  101. double num1;
  102. printf("\nIntroduzca el numero: \n");
  103. scanf("%lf", &num1);
  104. while (getchar() != '\n')
  105. ;
  106. printf("El seno es: %lf \n", sin(num1));
  107.  
  108. return;
  109.  
  110.  
  111. }
  112.  
  113. void coseno(void) {
  114. double num1;
  115. printf("\nIntroduzca el numero: \n");
  116. scanf("%lf", &num1);
  117. while (getchar() != '\n')
  118. ;
  119. printf("El coseno es: %lf \n", cos(num1));
  120.  
  121. return;
  122.  
  123.  
  124. }
  125.  
  126. void tangente(void) {
  127. double num1;
  128. printf("\nIntroduzca el numero: \n");
  129. scanf("%lf", &num1);
  130. while (getchar() != '\n')
  131. ;
  132. printf("La tangente es: %lf \n", tan(num1));
  133.  
  134. return;
  135.  
  136.  
  137. }


En línea

barnix456

Desconectado Desconectado

Mensajes: 128


El soft es como el sexo, cuando es Libre es mejor


Ver Perfil
Re: Calculadora hecha en C
« Respuesta #1 en: 6 Noviembre 2012, 21:53 pm »

hola Caster, muy bueno el tema, yo estoy empezando en C, precisamente en funciones, tengo una duda, perdona si es algo tonta, yo programo en linux, uso C::B quiero ejecuatar tu codigo, pero mi duda, es por que pones un archivo main.c y de funciones.h, como hago para juntarlo, el funciones.h se debe poner en algun lado especifico para que se ha llamado desde el main, o o todo se pone dentro de un mismo archivo, espero entiendas mi duda...! y de nuevo muy bueno  ;D


En línea

"No temo a los ordenadores; lo que temo es quedarme sin ellos"

Isaac Asimov
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Calculadora hecha en C
« Respuesta #2 en: 6 Noviembre 2012, 21:59 pm »

Una pregunta, que ventaja representa declarar las funcione mediante un include respecto a ponerlas directamente al código main?

SI el código es corto creo que es más molesto ir cambiando de archivo que ir a buscar la función.
En línea

barnix456

Desconectado Desconectado

Mensajes: 128


El soft es como el sexo, cuando es Libre es mejor


Ver Perfil
Re: Calculadora hecha en C
« Respuesta #3 en: 6 Noviembre 2012, 22:05 pm »

Citar
Una pregunta, que ventaja representa declarar las funcione mediante un include respecto a ponerlas directamente al código main?

creo que esa era mi pregunta y no la supe hacer, por que no declararlas, llamarlas y que esten dentro del mismo main
En línea

"No temo a los ordenadores; lo que temo es quedarme sin ellos"

Isaac Asimov
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Calculadora hecha en C
« Respuesta #4 en: 6 Noviembre 2012, 22:30 pm »

creo que esa era mi pregunta y no la supe hacer, por que no declararlas, llamarlas y que esten dentro del mismo main

No fue eso, es que no ley el comentario, me surgio la duda y no pare a leer los comentarios  :D
En línea

barnix456

Desconectado Desconectado

Mensajes: 128


El soft es como el sexo, cuando es Libre es mejor


Ver Perfil
Re: Calculadora hecha en C
« Respuesta #5 en: 6 Noviembre 2012, 23:57 pm »

si de echo, lo estoy uniendo en un solo main, lo terminare de unir en solo main y vere que tal funciona, aver si lo publico, en la noche...  :D
En línea

"No temo a los ordenadores; lo que temo es quedarme sin ellos"

Isaac Asimov
BatchianoISpyxolo

Desconectado Desconectado

Mensajes: 166


Ver Perfil
Re: Calculadora hecha en C
« Respuesta #6 en: 7 Noviembre 2012, 00:16 am »

Hay diversos motivos por los que se usan los headers de C o los módulos en general.

Una de las ideas es facilitar la lectura del código, optimizar la depuración del código y hacer más portable el código.

Imaginad que tenéis todas las librerías que uséis escritas en un mismo archivo o_O. Lo que hacéis es incluirlas y así quedan representadas por la directiva #include en vuestro código (el preprocesador luego incluirá el código de esas librerías en el archivo donde se incluyan).

Otra idea es la de encapsulación de código. Una parte interfaz (o pública) y otra parte implementación (o privada). De tal manera que el programador puede elegir qué información es visible para otros usuarios y cuál no.

Los archivos con extensión .h (headers o encabezados) contienen la información pública. Tipos de datos y encabezados de funciones para su posterior acceso. Y los archivos con extensión .c ( c files o archivos c ) contienen la parte privada o de implementación relacionanda con su encabezado.

Por ejemplo, imaginemos que implementamos un árbol binario y cada nodo guarda un entero. Posteriormente nosotros queremos un árbol binario que represente cadenas de caracteres. Pues tan solo yendo al header del árbol binario, podemos modificar ese tipo y todo el código nos servirá para represenar árboles binarios cuyos nodos representan cadenas de caracteres... De esa manera se incentiva la abstracción del código...

¡Saludos!
« Última modificación: 7 Noviembre 2012, 00:18 am por BatchianoISpyxolo » En línea

Puede que desees aprender a programar desde 0: www.espascal.es
barnix456

Desconectado Desconectado

Mensajes: 128


El soft es como el sexo, cuando es Libre es mejor


Ver Perfil
Re: Calculadora hecha en C
« Respuesta #7 en: 7 Noviembre 2012, 14:42 pm »

Muchas gracias por la explicacion..!  ;D
En línea

"No temo a los ordenadores; lo que temo es quedarme sin ellos"

Isaac Asimov
barnix456

Desconectado Desconectado

Mensajes: 128


El soft es como el sexo, cuando es Libre es mejor


Ver Perfil
Re: Calculadora hecha en C
« Respuesta #8 en: 7 Noviembre 2012, 15:16 pm »

yo no se mucho, aun estoy aprendiendo a programar en C, y basado en tu codigo, que la verdad no supe que hacer con el .h y el .c, pues decidi unirlo en uno solo, le hice algunos cambios, pero nada significativo, pero igual se los dejo....

Código:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void sumar(void);
void restar(void);
void multiplicar(void);
void dividir(void);
void potencia(void);
void raiz_cuadrada(void);
void seno(void);
void coseno(void);
void tangente(void);
void main()
{
    int op;

    printf("\t\tElija una opcion:\n\n");
printf("\t*********************************\n");
printf("\t*\t [1] Sumar\t\t*\n");
printf("\t*\t [2] Restar\t\t*\n");
printf("\t*\t [3] Multiplicar\t*\n");
printf("\t*\t [4] Dividir\t\t*\n");
printf("\t*\t [5] Potencia\t\t*\n");
printf("\t*\t [6] Raiz cuadrada\t*\n");
printf("\t*\t [7] Seno\t\t*\n");
printf("\t*\t [8] Coseno\t\t*\n");
printf("\t*\t [9] Tangente\t\t*\n");
printf("\t*\t [10] Salir\t\t*\n");
printf("\t*********************************\n\n");
scanf("%d", &op);

switch (op) {

case 1:
sumar();
getchar();
break;

case 2:
restar();
getchar();
break;

case 3:
multiplicar();
getchar();
break;

case 4:
dividir();
getchar();
break;

case 5:
potencia();
getchar();
break;

case 6:
raiz_cuadrada();
getchar();
break;

case 7:
seno();
getchar();
break;

case 8:
coseno();
getchar();
break;

case 9:
tangente();
getchar();
break;

case 10:
break;

default:
            printf("Ha elejido una opcion incorrecta\n");
            break;
}
}

void sumar(void)
{
    float num1, num2;
printf("\nIntroduzca los dos numeros a sumar: \n");
scanf("%f %f", &num1, &num2);
    printf("\n%.2f", num1 + num2);
return;
}
void restar(void)
{
    float num1, num2;
printf("\nIntroduzca los dos numeros a restar: \n");
scanf("%f %f", &num1, &num2);
printf("\n%.2f", num1 - num2);
return;
}
void multiplicar(void)
{
    float num1, num2;
printf("\nIntroduzca los dos numeros a multiplicar: \n");
scanf("%f %f", &num1, &num2);
printf("\n%.2f", num1 * num2);
return;
}
void dividir(void)
{
    float num1, num2;
printf("\nIntroduzca los dos numeros a dividir: \n");
scanf("%f %f", &num1, &num2);
printf("\n%.2f", num1 / num2);
return;
}
void potencia(void)
{
    float num1, num2;
printf("\nIntroduzca la base: \n");
scanf("%f", &num1);
printf("Introduzca el exponente: \n");
scanf("%f", &num2);
printf("\n%.2f", pow(num1, num2));
return;
}
void raiz_cuadrada(void)
{
    float num1;
printf("\nIntroduzca el numero: \n");
scanf("%f", &num1);
printf("La raiz cuadrada es: %.2f \n", sqrt(num1));
return;
}
void seno(void)
{
    float num1;
printf("\nIntroduzca el numero: \n");
scanf("%f", &num1);
printf("El seno es: %.2f \n", sin(num1));
return;
}
void coseno(void)
{
    float num1;
printf("\nIntroduzca el numero: \n");
scanf("%f", &num1);
printf("El coseno es: %.2f \n", cos(num1));
return;
}
void tangente(void)
{
    float num1;
printf("\nIntroduzca el numero: \n");
scanf("%f", &num1);
printf("La tangente es: %.2f \n", tan(num1));
return;
}
En línea

"No temo a los ordenadores; lo que temo es quedarme sin ellos"

Isaac Asimov
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Calculadora hecha en C
« Respuesta #9 en: 7 Noviembre 2012, 15:25 pm »

Gracias por la explicación.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Error con aplicacion hecha en vb en xp pro
Programación Visual Basic
israelchris 3 5,588 Último mensaje 13 Diciembre 2003, 23:46 pm
por israelchris
De que está hecha tu bufanda?
Foro Libre
Debci 4 4,567 Último mensaje 31 Marzo 2011, 15:03 pm
por Debci
Calculadora Hecha Por Mi :D Hechen un Vistazo!
Scripting
LeoJ24 2 2,697 Último mensaje 15 Enero 2013, 03:23 am
por zonahurbana
Calculadora que acepta 100 dígitos. hecha en lenguaje C.
Programación C/C++
NOB2014 3 3,420 Último mensaje 13 Mayo 2016, 21:12 pm
por AlbertoBSD
Videovigilancia: hecha la ley, hecha la trampa
Noticias
wolfbcn 1 1,772 Último mensaje 19 Mayo 2018, 13:04 pm
por buite
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines