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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Source] Calculadora Calc Don 0.7
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: [Source] Calculadora Calc Don 0.7  (Leído 21,092 veces)
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: [Source] Calculadora Calc Don 1.0
« Respuesta #10 en: 11 Julio 2012, 02:24 am »

Bueno Dryken no estaría mal , aquí te dejo tu código con algunas mejoras:
  • Portabilidad de código utilizando lo que ha dicho daniyo que se me ha adelantado.
  • "Limpieza de código" , estructurado en un archivo principal , uno de cabecera y otro con sus funciones.
  • Añadida función para pasar de binario a decimal y viceversa(no funcionaba).
  • Ahora todas las variables no se declaran todas de golpe solo cuando se necesitan.
  • Alguna que otra mejora superficial en alguna parte del código.
Te dejo el código de tu estupenda calculadora:
Archivo principal main.c
Código
  1. #include"funciones.h"
  2.  
  3. int main()
  4. {
  5.    int opc1;
  6.    do
  7.    {
  8.        imprime_menu();
  9.        scanf("%d", &opc1);
  10.        limpiar;
  11.        switch(opc1)
  12.        {
  13.  
  14.        case 1:
  15.            sumar();
  16.            break;
  17.        case 2:
  18.            restar();
  19.            break;
  20.        case 3:
  21.            multiplicacion();
  22.            break;
  23.        case 4:
  24.            division();
  25.            break;
  26.        case 5:
  27.            raiz_cuadrada();
  28.            break;
  29.        case 6:
  30.            potencia();
  31.            break;
  32.        case 7:
  33.            logaritmo();
  34.            break;
  35.        case 8:
  36.            seno();
  37.            break;
  38.        case 9:
  39.            coseno();
  40.            break;
  41.        case 10:
  42.            tangente();
  43.            break;
  44.        case 11:
  45.            cosecante();
  46.            break;
  47.        case 12:
  48.            secante();
  49.            break;
  50.        case 13:
  51.            cotangente();
  52.            break;
  53.        case 14:
  54.            conversion();
  55.  
  56.            break;
  57.        case 15:
  58.            multiplos();
  59.            break;
  60.        case 16:
  61.            binomio();
  62.            break;
  63.        case 17:
  64.            descuento();
  65.            break;
  66.        case 18:
  67.            multiplicar_matriz();
  68.            break;
  69.        case 19:
  70.            area_triangulo();
  71.            break;
  72.        case 20:
  73.            break;
  74.        default :
  75.            printf("\nElije una de las opciones mostradas.\n\n");
  76.            parar;
  77.            limpiar;
  78.        }
  79.    }
  80.    while(opc1!=20);
  81.    return 0;
  82. }
  83.  
Archivo de cabecera "funciones.h"
Código
  1. #ifndef FUNCIONES_H_INCLUDED
  2. #define FUNCIONES_H_INCLUDED
  3.  
  4. #ifdef __unix__      //Si esta definida la macro __unix__
  5. #include<unistd.h>   //Incluimos esta libreria para sleep y system
  6. #elif defined _WIN32 //Si no esta definida, pero esta definida la macro _WIN32
  7. #include<windows.h>  //Incluimos esta libreria para Sleep y system
  8. #endif               //Termina el if
  9.  
  10. #ifdef __unix__
  11. #define limpiar system("clear")
  12. #elif defined _WIN32
  13. #define limpiar system("cls")
  14. #endif
  15.  
  16. #ifdef __unix__
  17. #define parar sleep(2)
  18. #elif defined _WIN32
  19. #define parar Sleep(2500)
  20. #endif
  21.  
  22. #include<math.h>     //Libreria para las operaciones matematicas.
  23. #include<stdio.h>    //Libreria para la entrada/salida.
  24. #include<stdint.h>   //Libreria con todos los tipos de enteros.
  25. #include<stdlib.h>   //Libreria de proposito general aunque la usamos para gestionar la memoria dinamica.
  26. #include<string.h>   //Libreria para el manejo de cadenas.
  27.  
  28. //****************************************//
  29. //          CONTROL DEL PROGRAMA         *//
  30. //---------------------------------------*//
  31. void imprime_menu();//                    *//
  32. //****************************************//
  33.  
  34. //*************************************************//
  35. //FUNCION PARA LLAMAR A LAS CONVERSIONES DE MONEDA*//
  36. //------------------------------------------------*//
  37. void conversion();//                     *//
  38. //****************************************//
  39. //* SET DE CONVERSION EURO -> MONEDA     *//
  40. //****************************************//
  41. void euros_a_pesetas();//                *//
  42. void euros_a_yenes();//                  *//
  43. void euros_a_dolares();//                *//
  44. //****************************************//
  45. //* SET DE CONVERSION MONEDA -> EURO     *//
  46. //****************************************//
  47. void dolares_a_euros();//                *//
  48. void yenes_a_euros();//                  *//
  49. void pesetas_a_euros();//                *//
  50. //****************************************//
  51.  
  52. //****************************************//
  53. //* SET DE CONVERSION SISTEMAS NUMERICOS *//
  54. //****************************************//
  55. void decimal_a_binario();//              *//
  56. void binario_a_decimal();//              *//
  57. //****************************************//
  58. //****************************************//
  59. //    SET DE OPERACIONES ARITMETICAS     *//
  60. //---------------------------------------*//
  61. void sumar();//                          *//
  62. void restar();//                         *//
  63. void multiplicacion();//                 *//
  64. void division();//                       *//
  65. //****************************************//
  66.  
  67. //****************************************//
  68. //            OPERACION RAIZ             *//
  69. //---------------------------------------*//
  70. void raiz_cuadrada();//                  *//
  71. //****************************************//
  72.  
  73. //**************************************************//
  74. //           OPERACION POTENCIA                    *//
  75. //-------------------------------------------------*//
  76. void potencia();//                                 *//
  77. uint64_t pow_uint64(uint64_t base, uint32_t exp);//*//
  78. //**************************************************//
  79. //****************************************//
  80. //           OPERACION LOGARITMO         *//
  81. //---------------------------------------*//
  82. void logaritmo();//                      *//
  83. //****************************************//
  84. //****************************************//
  85. //   SET DE OPERACIONES TRIGONOMETRICAS  *//
  86. //---------------------------------------*//
  87. void seno();        void cosecante();//  *//
  88. void coseno();      void secante();//    *//
  89. void tangente();    void cotangente();// *//
  90. //****************************************//
  91.  
  92. //****************************************//
  93. //    SET DE OPERACIONES CON MATRICES    *//
  94. //---------------------------------------*//
  95. void multiplicar_matriz();//             *//
  96. //****************************************//
  97.  
  98. //****************************************//
  99. //      SET DE OPERACIONES DE AREAS      *//
  100. //---------------------------------------*//
  101. void area_triangulo();//                 *//
  102. //****************************************//
  103.  
  104. //****************************************//
  105. //        SET DE OTRAS OPERACIONES       *//
  106. //---------------------------------------*//
  107. void multiplos();//                      *//
  108. void binomio();//                        *//
  109. void descuento();//                      *//
  110. void invertir_cadena(char *cadena);//    *//
  111. //****************************************//
  112.  
  113.  
  114. #endif // FUNCIONES_H_INCLUDED
  115.  
Archivo con las definiciones de las funciones "funciones.c"
Código
  1. #include "funciones.h"
  2. void imprime_menu()
  3. {
  4.    printf("\nElije la operaci%cn a realizar: ",162);
  5.    printf("\n-----------------------------");
  6.    printf("\n\n1-Suma\t\t\t8-Sen\t\t14-Conversor");
  7.    printf("\n2-Resta\t\t\t9-Cos\t\t15-Conocer m%cltiplos",163);
  8.    printf("\n3-Multiplicaci%cn\t10-Tang\t\t16-Teorema Binomio",162);
  9.    printf("\n4-Divisi%cn\t\t11-Cosec\t17-Calcular un descuento",162);
  10.    printf("\n5-Ra%cz\t\t\t12-Sec\t\t18-Multiplicar 2 matrices",161);
  11.    printf("\n6-Potencia\t\t13-Cotang\t19-Area de un triangulo");
  12.    printf("\n7-Logaritmo\t\t\t\t20-Salir\t\t\t");
  13. }
  14. void conversion()
  15. {
  16.    int opc2=0;
  17.  
  18.    do
  19.    {
  20.        printf("\nElije el formato:\n");
  21.        printf("-----------------\n\n");
  22.        printf("1-Euros->Pesetas\t\t2-Pesetas->Euros\n\n3-Euros->Dolares\t\t4-Dolares->Euros\n\n5-Euros->Yenes\t\t\t6-Yenes->Euros\n\n7-Decimal->Binario\t\t8-Binario->Decimal\n\n9-Volver\t");
  23.        scanf("%d",&opc2);
  24.        limpiar;
  25.        switch(opc2)
  26.        {
  27.  
  28.        case 1:
  29.            euros_a_pesetas();
  30.            break;
  31.        case 2:
  32.            pesetas_a_euros();
  33.            break;
  34.        case 3:
  35.            euros_a_dolares();
  36.            break;
  37.        case 4:
  38.            dolares_a_euros();
  39.            break;
  40.        case 5:
  41.            euros_a_yenes();
  42.            break;
  43.        case 6:
  44.            yenes_a_euros();
  45.            break;
  46.        case 7:
  47.            decimal_a_binario();
  48.            break;
  49.        case 8:
  50.            binario_a_decimal();
  51.            break;
  52.        case 9:
  53.            break;
  54.        default :
  55.            printf("\nElije una de las opciones mostradas.\n\n");
  56.            parar;
  57.            limpiar;
  58.        }
  59.    }
  60.    while(opc2!=9);
  61. }
  62.  
  63. void euros_a_pesetas()
  64. {
  65.    float num;
  66.    printf("\nIntroduce la cantidad de euros a transformar:\t");
  67.    scanf("%f", &num);
  68.    printf("\nSon: %f Pesetas", num*166);
  69. }
  70. void pesetas_a_euros()
  71. {
  72.    float num;
  73.    printf("\nIntroduce la cantidad de pesetas a transformar:\t");
  74.    scanf("%f",&num);
  75.    printf("\nSon: %f Euros",num/166);
  76. }
  77. void euros_a_dolares()
  78. {
  79.  
  80.    float num;
  81.    printf("\nIntroduce la cantidad de euros a transformar:\t");
  82.    scanf("%f",&num);
  83.    printf("\nSon: %f Dolares",num/0.8136);
  84. }
  85. void dolares_a_euros()
  86. {
  87.    float num;
  88.    printf("\nIntroduce la cantidad de dolares a transformar:\t");
  89.    scanf("%f",&num);
  90.    printf("\nSon: %f Euros",num/1.2616);
  91. }
  92. void euros_a_yenes()
  93. {
  94.    float num;
  95.    printf("\nIntroduce la cantidad de euros a transformar:\t");
  96.    scanf("%f",&num);
  97.    printf("\nSon: %f Yenes",num*97.7538829);
  98. }
  99. void yenes_a_euros()
  100. {
  101.    float num;
  102.    printf("\nIntroduce la cantidad de yenes a transformar:\t");
  103.    scanf("%f",&num);
  104.    printf("\nSon: %f Euros",num*0.0102297727);
  105. }
  106. void sumar()
  107. {
  108.    double numero1, numero2;
  109.    printf("\nIntroduce el primer n%cmero a sumar:\t",163);
  110.    scanf("%lf",&numero1);
  111.    printf("Introduce el segundo n%cmero a sumar:\t",163);
  112.    scanf("%lf",&numero2);
  113.    printf("\nEl resultado es:  %f",numero1+numero2);
  114. }
  115. void restar()
  116. {
  117.    double numero1, numero2;
  118.    printf("\nIntroduce el primer n%cmero a restar:\t",163);
  119.    scanf("%lf",&numero1);
  120.    printf("Introduce el segundo n%cmero a restar:\t",163);
  121.    scanf("%lf",&numero2);
  122.    printf("\nEl resultado es:  %lf",numero1-numero2);
  123. }
  124. void multiplicacion()
  125. {
  126.    double numero1, numero2;
  127.    printf("\nIntroduce el primer multiplicante:\t");
  128.    scanf("%lf",&numero1);
  129.    printf("Introduce el segundo multiplicante :\t");
  130.    scanf("%lf",&numero2);
  131.    printf("\nEl resultado es:  %lf",numero1*numero2);
  132. }
  133. void division()
  134. {
  135.    double numero1, numero2;
  136.    printf("\nIntroduce el dividendo:\t");
  137.    scanf("%lf",&numero1);
  138.    printf("Introduce el divisor:\t");
  139.    scanf("%lf",&numero2);
  140.    printf("\nEl cociente es: %lf\nEl resto de la division entera es: %d",numero1/numero2, ((int)numero1)%(int)(numero2));
  141.  
  142. }
  143. void raiz_cuadrada()
  144. {
  145.    double numero1;
  146.    printf("\nIntroduce el n%cmero del cual deseas sacar la raiz:\t",163);
  147.    scanf("%lf",&numero1);
  148.    printf("\nEl resultado es:  %lf", sqrt(numero1));
  149. }
  150. void potencia()
  151. {
  152.    double numero1, numero2;
  153.    printf("\nIntroduce la base:\t");
  154.    scanf("%lf",&numero1);
  155.    printf("Introduce el exponente:\t");
  156.    scanf("%lf",&numero2);
  157.    printf("\nEl resultado es:  %lf",pow(numero1,numero2));
  158. }
  159. void logaritmo()
  160. {
  161.    double numero1;
  162.    printf("\nIntroduce el n%cmero (base 10 por defecto):\t",163);
  163.    scanf("%lf",&numero1);
  164.    printf("\nEl resultado es:  %lf",log10(numero1));
  165. }
  166. void seno()
  167. {
  168.    double numero1;
  169.    printf("\nIntroduce el n%cmero a hallar el seno:\t",163);
  170.    scanf("%lf",&numero1);
  171.    printf("\nEl resultado es:  %f",sin(numero1));
  172. }
  173. void coseno()
  174. {
  175.    double numero1;
  176.    printf("\nIntroduce el n%cmero a hallar el coseno:\t",163);
  177.    scanf("%lf",&numero1);
  178.    printf("\nEl resultado es:  %f",cos(numero1));
  179. }
  180. void tangente()
  181. {
  182.    double numero1;
  183.    printf("\nIntroduce el n%cmero a hallar la tangente:\t",163);
  184.    scanf("%lf",&numero1);
  185.    printf("\nEl resultado es:  %lf",tan(numero1));
  186. }
  187. void cosecante()
  188. {
  189.    double numero1;
  190.    printf("\nIntroduce el n%cmero a hallar el cosecante:\t",163);
  191.    scanf("%lf",&numero1);
  192.    printf("\nEl resultado es:  %lf",asin(numero1));
  193. }
  194. void secante()
  195. {
  196.    double numero1;
  197.    printf("\nIntroduce el n%cmero a hallar el secante:\t",163);
  198.    scanf("%lf",&numero1);
  199.    printf("\nEl resultado es:  %lf",acos(numero1));
  200. }
  201. void cotangente()
  202. {
  203.    double numero1;
  204.    printf("\nIntroduce el n%cmero a hallar el cotangente:\t",163);
  205.    scanf("%lf",&numero1);
  206.    printf("\nEl resultado es:  %lf",atan(numero1));
  207. }
  208. void multiplos()
  209. {
  210.    unsigned long int num,cifras;
  211.    printf("Introduce el numero a conocer sus m%cltiplos ---> ",163);
  212.    scanf("%lu",&num);
  213.    printf("%cHasta que cifras deseas conocer los m%cltiplos del %lu ---> ",168,163,num);
  214.    scanf("%lu",&cifras);
  215.    for(int i=1; cifras!=0; ++i)
  216.    {
  217.        printf("%lu ",num*i);
  218.        --cifras;
  219.    }
  220. }
  221. void binomio()
  222. {
  223.    long n, k, nf, kf, resta, restaf, v, w;
  224.    printf( "\nIngrese n y k: " );
  225.    fflush( stdout);
  226.    scanf( "%ld %ld", &n, &k );
  227.    nf = 1;
  228.    kf = 1;
  229.    resta = n - k;
  230.    restaf = 1;
  231.    while ( n > 1 )    /* factorial de n */
  232.    {
  233.        nf *= n--;
  234.    }
  235.    while ( k > 1 )    /* factorial de k */
  236.    {
  237.        kf *= k--;
  238.    }
  239.    while ( resta > 1 )    /* factorial de (n - k) */
  240.    {
  241.        restaf *= resta--;
  242.    }
  243.    v = kf * restaf; /* k! * (n - k)! */
  244.    w = nf / v; /* n! / (k! * (n - k)!) */
  245.    /* resultados */
  246.    printf( "\nn! = %ld\n"
  247.            "k! = %ld\n"
  248.            "(n - k)! = %ld\n"
  249.            "k! * (n - k)! = %ld\n"
  250.            "n! / [k! (n - k)!] = %ld\n"
  251.            "--------------------------\n"
  252.            "Resultado final (ncr): %ld\n", nf, kf, restaf, v, w, w );
  253. }
  254. void descuento()
  255. {
  256.    int opcioniva;
  257.    char producto[25];
  258.    double precio, descuento, res, preciodesc, precioiva, precioiva2;
  259.    printf("\nIntroduce el nombre del producto:    ");
  260.    while(getchar()!='\n'){}
  261.    fgets(producto, sizeof(producto), stdin);
  262.    producto[strlen(producto)-1] = '\0';
  263.    printf("\n%cDicho producto incluye IVA?:\n\n1-Si      2-No    ",168);
  264.    scanf("%d", &opcioniva);
  265.    if(opcioniva==1)
  266.    {
  267.        printf("\nIntroduce el precio del producto:       ");
  268.        scanf("%lf", &precio);
  269.        printf("Introduce su descuento en porcentaje:   ");
  270.        scanf("%lf", &descuento);
  271.  
  272.        preciodesc=precio*descuento/100;
  273.        res=precio-preciodesc;
  274.  
  275.        printf("\nEl descuento del %s es de %lf euros", producto, preciodesc);
  276.        printf("\n\nEl precio final del %s es de %lf euros", producto, res);
  277.    }
  278.    else
  279.    {
  280.  
  281.        printf("\nIntroduce el precio del producto:       ");
  282.        scanf("%lf", &precio);
  283.        printf("Introduce su descuento en porcentaje:   ");
  284.        scanf("%lf", &descuento);
  285.        precioiva=precio*18/100;
  286.        precioiva2=precioiva+precio;
  287.        preciodesc=precioiva2*descuento/100;
  288.        res=precioiva2-preciodesc;
  289.        printf("\nEl precio del %s con iva es de %lf euros\n", producto, precioiva2);
  290.        printf("\nEl descuento del %s es de %lf euros", producto, preciodesc);
  291.        printf("\n\nEl precio final del %s es de %lf euros", producto, res);
  292.    }
  293. }
  294. void multiplicar_matriz()
  295. {
  296.    int n3,m3,o3,p3,i3,j3,k3,a3[10][10],b3[10][10],c3[10][10];
  297.    printf("\n\n%cCuantas filas tendra la matriz A?: ",168);
  298.    scanf("%d", &m3);
  299.    printf("\n%cCuantas columnas tendra la matriz A?: ",168);
  300.    scanf("%d", &n3);
  301.    printf("\n%cCuantas filas tiene la matriz B?: ",168);
  302.    scanf("%d", &o3);
  303.    printf("\n%cCuantas columnas tendra la matriz B?: ",168);
  304.    scanf("%d", &p3);
  305.    /*Reconoce si se puede realizar la multiplicacion*/
  306.    if(m3!=p3)
  307.    {
  308.        printf("\n\nEl n%cmero de columnas de la matriz \"A\" es diferente al n%cmero de filas \nde la matriz \"B\"",163,163);
  309.        printf("\n\nEl producto matricial no es posible de realizar.\n\n");
  310.    }
  311.    else
  312.    {
  313.        for (i3=1; i3<=m3; i3++)  /*Ciclo anidado que captura la matriz A*/
  314.        {
  315.            for (j3=1; j3<=n3; j3++)
  316.            {
  317.                printf("\nDame el elemento A(%i,%i)(fila/columna): ", i3,j3);
  318.                scanf("%i", &a3[i3][j3]);
  319.            }
  320.        }
  321.        for (i3=1; i3<=o3; i3++) /*Ciclo anidado que captura la matriz B*/
  322.        {
  323.            for (j3=1; j3<=p3; j3++)
  324.            {
  325.                printf("\nDame el elemento B(%i,%i)(fila/columna): ", i3,j3);
  326.                scanf("%i", &b3[i3][j3]);
  327.            }
  328.        }
  329.        for (i3=1; i3<=m3; i3++) /*Ciclo anidado que multiplica las 2 matrices*/
  330.        {
  331.            for (j3=1; j3<=p3; j3++)
  332.            {
  333.                c3[i3][j3]=0; /*Limpia la variable para entrar de nuevo al for*/
  334.                for (k3=1; k3<=n3; k3++);
  335.                c3[i3][j3]=(c3[i3][j3]+a3[i3][k3])*b3[k3][j3];
  336.            }
  337.        }
  338.        printf("\n\nLa matriz resultante de la multiplicacion es: \n");
  339.        /*Ciclo que imprime la matriz resultante*/
  340.        for (i3=1; i3<=m3; i3++);
  341.        {
  342.            printf("\n");
  343.            for(j3=1; j3<=p3; j3++);
  344.            printf(" %i ",c3[i3][j3]);
  345.        }
  346.    }
  347.  
  348.  
  349. }
  350. void area_triangulo()
  351. {
  352.    double numero1,numero2;
  353.    printf("\nIntroduce la base:\t");
  354.    scanf("%lf",&numero1);
  355.    printf("Introduce la altura:\t");
  356.    scanf("%lf",&numero2);
  357.    printf("El %crea del triangulo es %lf",160,(numero1*numero2)/2);
  358. }
  359. void decimal_a_binario()
  360. {
  361.  
  362.    uint64_t dec;
  363.    printf("Dame un numero en decimal:");
  364.    scanf("%I64u",&dec);
  365.  
  366.    char *resultado=calloc(64*8,sizeof(char));
  367.    char *presultado=resultado;
  368.    if(dec/2==0) {}
  369.    else
  370.    {
  371.        while(dec!=1)
  372.        {
  373.            *resultado=(dec%2)+48;
  374.            dec/=2;
  375.            ++resultado;
  376.        }
  377.  
  378.        *resultado=49;
  379.        invertir_cadena(presultado);
  380.        printf("Su numero en binario es %s",presultado);
  381.    }
  382.  
  383. }
  384. void binario_a_decimal()
  385. {
  386.    char *bin=calloc(8,sizeof(char));
  387.    printf("Dame un numero en binario (hasta 64 bits):");
  388.    scanf("%s",bin);
  389.    uint64_t res=0;
  390.    int i=0;
  391.    char *p_f_bin=bin+strlen(bin)-1;
  392.    while(p_f_bin!=bin-1)
  393.    {
  394.        if((*(p_f_bin)-48)==1)
  395.        {
  396.            res+=pow_uint64(2,i);
  397.        }
  398.        ++i;
  399.        --p_f_bin;
  400.    }
  401.    printf("Su numero en decimal es: %I64u",res);
  402. }
  403. void invertir_cadena(char *cadena)
  404. {
  405.    char *p_f_cadena=cadena+strlen(cadena)-1;
  406.    char save=0;
  407.    for(int i = 0; cadena+i<=p_f_cadena; ++i)
  408.    {
  409.        save=*(cadena+i);
  410.        *(cadena+i)=*p_f_cadena;
  411.  
  412.        *p_f_cadena=save;
  413.        --p_f_cadena;
  414.    }
  415. }
  416. uint64_t pow_uint64(uint64_t base, uint32_t exp)
  417. {
  418. uint64_t ret = 1;
  419. for (uint32_t i = 0; i < exp; ++i)
  420. ret *= base;
  421. return ret;
  422. }
  423.  


« Última modificación: 11 Julio 2012, 14:39 pm por avesudra » En línea

Regístrate en
durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: [Source] Calculadora Calc Don 1.0
« Respuesta #11 en: 11 Julio 2012, 06:36 am »

Código
  1. #ifdef __unix__
  2.            sleep(2500);

hola! me parece que en sistemas *nix la unidad de sleep esta dado en segundos. Si queremos hacer una pausa de 5seg, seria

Código
  1. sleep(5);


Saludos


En línea

Ahorrate una pregunta, lee el man
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: [Source] Calculadora Calc Don 1.0
« Respuesta #12 en: 11 Julio 2012, 13:10 pm »

Gracias por el detalle Durasno ahora lo cambio que tengo que quitar también un fflush(stdin) que he visto por ahí.
¡Un saludo!
En línea

Regístrate en
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [Source] Calculadora Calc Don 1.0
« Respuesta #13 en: 11 Julio 2012, 14:07 pm »

Creo que en vez de utilizar las macros constantemente, simplemente se puede hacer:
Código
  1. #ifdef __unix__
  2. #define limpiar system("clear")
  3. #elif defined _WIN32
  4. #define limpiar system("cls")
  5. #endif
  6.  
Y en el codigo simplemente pones limpiar cada vez.

Saludos.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: [Source] Calculadora Calc Don 1.0
« Respuesta #14 en: 11 Julio 2012, 14:17 pm »

Creo que en vez de utilizar las macros constantemente, simplemente se puede hacer:
Código
  1. #ifdef __unix__
  2. #define limpiar system("clear")
  3. #elif defined _WIN32
  4. #define limpiar system("cls")
  5. #endif
  6.  
Y en el codigo simplemente pones limpiar cada vez.

Saludos.
Tienes razón daniyo , el preprocesador tiene que realizar más condiciones , así se "optimiza" o así lo creo el trabajo de éste.
En línea

Regístrate en
Dryken

Desconectado Desconectado

Mensajes: 117


El arte de vencer se aprende en las derrotas


Ver Perfil WWW
Re: [Source] Calculadora Calc Don 1.0
« Respuesta #15 en: 11 Julio 2012, 15:42 pm »

avesudra me has dejado sorprendido al ver tooodo lo que has mejorado el codigo. Ahora me pondre a verlo mas tranquilamente pero a primera vista se ve que has echo muchos cambios, me encanta socio esta genial, enhorabuena  ;-)  ;-)  ;-)  ;-)  ;-)  ;-)

Yo tambien tengo echo por mi cuenta algunos cambios y una pequeña interfaz grafica, vamos, mejorarle un poco el diseño. En cuanto tenga mas cosas podemos unir ambos codigos en uno solo que fijo quedara todo mejor.

En principio destripo un poco tus cambios en el code y aviso para alguna novedad  :)

Edito

Ahora viendo tu codigo y probando he aprendido del todo lo de la portabilidad de la cabecera. Si creo que lo he entendido bien, de este modo tambien valdria...para mi ahorra mas espacio  :xD

Código
  1. #ifdef __unix__ //Si se esta compilando en SO Unix hace lo siguiente
  2.  #include<unistd.h>
  3.  #define limpiar system("clear")
  4.  #define parar sleep(2)
  5. #elif defined _WIN32 //Si se esta compilando en SO Windows hace lo siguiente
  6.  #include<windows.h>
  7.  #define limpiar system("cls")
  8.  #define parar Sleep(2500)
  9. #endif

Bueno, otra cosa que aprendo...a ver si sigue asi la cosa que aprender es muy bueno.
« Última modificación: 11 Julio 2012, 16:52 pm por Dryken » En línea

Lo intentas y fracasas, lo intentas y fracasas pero fracasas realmente cuando dejas de intentarlo.

Calc Don v0.7 - C
http://foro.elhacker.net/programacion_cc/source_calculadora_calc_don_10-t366489.0.html

Hundir la flota v0.3 - C#
http://foro.elhacker.net/net/source_c_juego_hundir_la_flota_v01-t377794.0.html
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [Source] Calculadora Calc Don 1.0
« Respuesta #16 en: 11 Julio 2012, 17:48 pm »

Una pregunta: ¿como has hecho la interfaz grafica?
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Dryken

Desconectado Desconectado

Mensajes: 117


El arte de vencer se aprende en las derrotas


Ver Perfil WWW
Re: [Source] Calculadora Calc Don 1.0
« Respuesta #17 en: 11 Julio 2012, 18:00 pm »

Si te refieres a esta interfaz...

Código
  1.  
  2.             printf("\n elige la operaci%cn a realizar: ",162);
  3.             printf("\n -----------------------------");
  4.             printf("\n\n 1-Suma\t\t\t8-Sen\t\t14-Conversor",163);
  5.             printf("\n 2-Resta\t\t9-Cos\t\t15-Conocer m%cltiplos",163);
  6.             printf("\n 3-Multiplicaci%cn\t10-Tang\t\t16-Teorema Binomio",162);
  7.             printf("\n 4-Divisi%cn\t\t11-Cosec\t17-Calcular un descuento",162);
  8.             printf("\n 5-Ra%cz\t\t\t12-Sec\t\t18-Multiplicar 2 matrices",161);
  9.             printf("\n 6-Potencia\t\t13-Cotang\t19-Area de un triangulo",161);
  10.             printf("\n 7-Logaritmo\t\t\t\t20-Salir\t\t\t",161);

Bueno aunque todavia no se le puede considerar mucho interfaz, de interfaz tiene poco, portada por llamarlo de algun modo :xD

Para la proxima update de la calc estara mejor que ahora, estoy haciendo un diseño algo mejor, aunque sigue siendo basico. lo suyo seria colocarle algo de la lib de ncurses...ya vere que hacer.

Bueno pues como puedes ver en el code es como esta estructurada, simplemente he colocado por columnas las operaciones de 1,2,3...etc

En línea

Lo intentas y fracasas, lo intentas y fracasas pero fracasas realmente cuando dejas de intentarlo.

Calc Don v0.7 - C
http://foro.elhacker.net/programacion_cc/source_calculadora_calc_don_10-t366489.0.html

Hundir la flota v0.3 - C#
http://foro.elhacker.net/net/source_c_juego_hundir_la_flota_v01-t377794.0.html
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: [Source] Calculadora Calc Don 1.0
« Respuesta #18 en: 11 Julio 2012, 18:04 pm »

Joder otra vez , si dryken así está mejor el preprocesador realiza menos condiciones y hace lo mismo , hoy no estoy muy agil mentalmente que digamos  :xD , daniyo se refiere a la interfaz por consola , en vez de eso dryken , se puede hacer con GTK+ o Qt que son portables.
En línea

Regístrate en
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [Source] Calculadora Calc Don 1.0
« Respuesta #19 en: 11 Julio 2012, 18:20 pm »

Citar
Yo tambien tengo echo por mi cuenta algunos cambios y una pequeña interfaz grafica
Lei eso y pregunte.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Páginas: 1 [2] 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Source][VB] Calculadora de operaciones combinadas
.NET (C#, VB.NET, ASP)
raul338 2 14,884 Último mensaje 30 Diciembre 2009, 22:06 pm
por Meta
Formual de Calc (OpenOffice)
Programación General
Zeroql 0 1,560 Último mensaje 17 Septiembre 2012, 00:56 am
por Zeroql
Sencilla calculadora con reproductor de musica python (Source)
Scripting
-Mc_Raaka- 0 2,104 Último mensaje 5 Agosto 2013, 09:52 am
por -Mc_Raaka-
LibreOffice Calc OOoBasic: ERROR Else sin If
Scripting
novicio 4 3,691 Último mensaje 13 Mayo 2018, 22:39 pm
por novicio
No me abre calc
Bases de Datos
enrique4480 1 2,381 Último mensaje 13 Marzo 2024, 14:07 pm
por Saberuneko
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines