• Lunes 29 de Abril de 2024, 00:01

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - LenguajeC

Páginas: 1 [2]
26
C/C++ / Re: No logro regresar el resultado en llamado a función
« en: Martes 11 de Mayo de 2010, 02:51 »
Hola Epa
Gracias por tu respuesta, voy a poner en práctica lo que me dices, solo que lo voy a hacer sin puntero porque estoy muy al principio y quiero ir despacio.-

Saludos.
Daniel

27
C/C++ / Re: No logro regresar el resultado en llamado a función
« en: Lunes 10 de Mayo de 2010, 18:15 »
Hola vite666
Perdón que torpe, mil disculpas.-
El problema es que no logro regresar la variable "memoria" a la función main con el contenido que obtengo de la llamada "opciones(memoria,resultado);".-

Espero que ahora se entienda.-

Saludos.
Daniel

28
C/C++ / No logro regresar el resultado en llamado a función
« en: Lunes 10 de Mayo de 2010, 00:43 »
Hola a todos.-
Como este es mi primer post voy a presentarme porque mi situación es un tanto particular.-
Tengo 58 años y por mi trabajo y por distar 90 km. de la universidad mas cercana no tengo otra manera que leer,leer y consultar en los foros.-
Bueno, a continuación les dejo mi primer problema para ver si me dan una mano con la solución y me dicen en que debo mejorar el programa.-

Código: C
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4. #include <conio.h>
  5.  
  6. HANDLE consola;
  7. COORD posicion;
  8.  
  9. void dlq(int hor, int ver);
  10. void ejemplos();
  11. double separa(char ingreso[], double *resultado);
  12. double *opciones(double memoria, double resultado);
  13.  
  14. int main(int argc, char *argv[])
  15. {
  16.    consola = GetStdHandle(STD_OUTPUT_HANDLE);
  17.    system("color 9E");
  18.    ejemplos();
  19.    double resultado,memoria=0;
  20.    char ingreso[50];
  21.    while (ingreso[0] != 's')
  22.    {
  23.       system("cls");
  24.       ejemplos();
  25.       dlq(20,4);printf(" Ingreso....:                      s - para finalizar");
  26.       dlq(18,51);printf("%5.3f",memoria);
  27.       dlq(20,18);
  28.       gets(ingreso);
  29.       if(ingreso[0] !='0')
  30.       {
  31.          separa(ingreso,&resultado);
  32.          if(resultado !=0)
  33.          {
  34.             dlq(18,17);
  35.             printf("%5.3f",resultado);
  36.             opciones(memoria,resultado);
  37.             ingreso[0]='';
  38.          }
  39.       }
  40.       else
  41.       {
  42.          system("color C1");
  43.          dlq(24,5);
  44.          printf("Ingreso incorrecto - por favor revise los ejemplos");
  45.          dlq(26,5);
  46.          system("pause");
  47.          system("color 9E");
  48.          dlq(26,5);
  49.       }
  50.    }  
  51.    return 0;
  52. }
  53.  
  54. void dlq(int hor, int ver)
  55. {
  56.    posicion.X = ver;posicion.Y = hor;SetConsoleCursorPosition(consola, posicion);
  57. }
  58.  
  59. double separa(char ingreso[], double *resultado)
  60. {
  61.    char opUno[50], oper[50], opDos[50], priseg=65;
  62.    int i=0, poper=0, pseg=0;
  63.    for(i = 0; i < strlen(ingreso); i++)
  64.    {
  65.       if((ingreso[i] == 42 || ingreso[i] == 43 || ingreso[i] == 45 || ingreso[i] == 47))
  66.       {
  67.          oper[poper]=ingreso[i];
  68.          oper[poper+1]= '';
  69.          poper++;
  70.          priseg=priseg+1;
  71.       }
  72.       else  
  73.       {  
  74.          if(priseg == 65)
  75.          {
  76.             opUno[i] = ingreso[i];
  77.             opUno[i+1] = '';
  78.          }
  79.          else
  80.          {
  81.             opDos[pseg] = ingreso[i];
  82.             opDos[pseg+1] = '';
  83.             pseg++;
  84.          }
  85.       }
  86.    }
  87.    char op_1[50], op_2[50];
  88.    int lugar = 0;
  89.    for(i=0;opUno[i]!='';i++)  
  90.    {
  91.       if((opUno[i] > 47 && opUno[i] < 58) || (opUno[i] == 46))      
  92.       {
  93.          op_1[lugar] = opUno[i];          
  94.          lugar++;
  95.          op_1[lugar] = '';
  96.       }
  97.    }
  98.    lugar = 0;
  99.    for(i=0;opDos[i]!='';i++)  
  100.    {
  101.       if((opDos[i] > 47 && opDos[i] < 58) || (opDos[i] == 46))      
  102.       {
  103.          op_2[lugar] = opDos[i];
  104.          lugar++;
  105.          op_2[lugar] = '';
  106.       }
  107.    }
  108.    if(strlen(opUno) ==  strlen(op_1) && strlen(opDos) ==  strlen(op_2) && strlen(oper) == 1)
  109.    {
  110.        double op_uno=0,op_dos=0;
  111.        op_uno=atof(op_1);op_dos=atof(op_2);  
  112.        if(oper[0] == '+')
  113.           *resultado = op_uno + op_dos;
  114.        if(oper[0] == '-')
  115.           *resultado = op_uno - op_dos;
  116.        if(oper[0] == '*')
  117.           *resultado = op_uno * op_dos;
  118.        if(oper[0] == '/')
  119.           *resultado = op_uno / op_dos;
  120.    }
  121.    else
  122.    {
  123.       *resultado = 0;
  124.    }
  125.    
  126.    return (*resultado);
  127. }
  128.  
  129. void ejemplos()
  130. {
  131.    dlq(2,4);
  132.    printf(" ---------------------- Calculadora lineal ----------------------");
  133.    dlq(4,4);printf(" Ejemplos:");
  134.    dlq(6,13);printf(" Suma...........: 125.4+18");
  135.    dlq(8,13);printf(" Resta..........: 125-10.54");
  136.    dlq(10,13);printf(" MultiplicacixA2n.: 125.48*10.50");
  137.    dlq(12,13);printf(" DivicixA2n.......: 678.48/5.99");
  138.    dlq(14,13);printf(" No dejar espacios - x3C Enter x3E confirma");
  139.    dlq(16,4);
  140.    printf(" ----------------------------------------------------------------");
  141.    dlq(18,4);printf(" Resultado..:                      Memoria....:");
  142. }
  143.  
  144.  
  145. double *opciones(double memoria,double resultado)
  146. {
  147.    dlq(22,5);
  148.    printf("----------------------------------------------------------------");
  149.    dlq(24,5);
  150.    printf("Opciones de memoria");
  151.    dlq(26,5);
  152.    printf("1 - Menoria +");
  153.    dlq(28,5);    
  154.    printf("2 - Menoria -");
  155.    dlq(30,5);
  156.    printf("3 - Borra memoria y memoria +");
  157.    dlq(32,5);
  158.    printf("4 - Borra memoria y memoria -");
  159.    dlq(34,5);
  160.    printf("5 - Sin ingerencia en memoria");
  161.    int opc=0;
  162.    while (opc <1 || opc > 5)
  163.    {
  164.       dlq(36,5);
  165.       printf("Ingreso...:");
  166.       scanf("%d",&opc);  
  167.       dlq(38,5);
  168.       switch(opc)
  169.       {
  170.          case 1:memoria = memoria + resultado;break;
  171.          case 2:memoria = memoria - resultado;break;
  172.          case 3:memoria = resultado;break;
  173.          case 4:memoria = - resultado;break;
  174.          case 5:break;
  175.          default:printf("Solo numeros del 1 al 5, apriete una tecla para continuar...");getch();
  176.       }
  177.    }
  178.    return &memoria;
  179. }
  180.  

Un gran saludo.-
Daniel
Nota:Lenguaje C - Windows XP - DEV-C++.-

Páginas: 1 [2]