Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: barnix456 en 11 Febrero 2013, 00:47 am



Título: Fracciones en C [Ayuda]
Publicado por: barnix456 en 11 Febrero 2013, 00:47 am
Hola buenas tardes, tengo una duda, mi maestro de Fisica me ha dejado un pequeño programa en C para resolver la ecuacion de OHM, y lo he echo, pero me ha pedido que lo haga para que el programa tambien lea numero fraccionarios  :rolleyes: ahora no se, he buscado en google pero no he encontrado grandes cosas, si alguien sabe como trabajar con fracciones en C, me imagino que debe ser una funcion. Aqui les dejo mi codigo, cualquier comentario acerca del codigo son bienvenidos  ;D


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void resistencia(void);
  4. void intensidad(void);
  5. void voltaje(void);
  6.  
  7. int main()
  8. {
  9.   int opc;
  10.   printf("\n");
  11.   printf ("\t\tC\tE\tP\tR\tO\tG\n");
  12.   printf("\n"); printf("\n");
  13.   printf ("\t\t\tCIRCUITOS EN SERIE \n");
  14.   printf ("\n");
  15.   printf ("Este Software se basa en la ley de OHM\n");
  16.   printf("\n");
  17.   printf("Precione ENTER para continuar\n");
  18.   getchar();
  19.   a:
  20.   system("clear");
  21.   printf("ELIJA UNA OPCCION: \n\n \t1)Calcular resistencia\n\t2)Calcular Intensidad\n\t3)Calcular Voltaje\n\t4)Salir\n");
  22.   scanf("%d",&opc);
  23.   switch (opc)
  24.   {
  25.       case 1:
  26.       {
  27.           resistencia();
  28.           break;
  29.        }
  30.        case 2:
  31.        {
  32.            intensidad();
  33.            break;
  34.        }
  35.        case 3:
  36.        {
  37.            voltaje();
  38.            break;
  39.        }
  40.        case 4:
  41.        {
  42.            exit(0);
  43.        }
  44.        default:
  45.        {
  46.            goto a;
  47.        }
  48.   }
  49.   return 0;
  50. }
  51.  
  52. void resistencia(void)
  53. {
  54.    float n, res, total=0;
  55.    int cont=1;
  56.    system("clear");
  57.    printf("\t\tEn esta sección calcularemos la resistencia total\n"); printf("\n");
  58.    printf("Cuantas resistencias tiene el circuito: "); scanf("%f",&n); printf("\n");
  59.    while (cont<=n)
  60.    {
  61.        printf("Escribe el valor de la resistencia %d :> ",cont); scanf("%f",&res);
  62.        total+=res;
  63.        cont++;
  64.    }
  65.    printf("\n");
  66.    printf("El resultado de el total de las resistencias es: %.2f ohmios",total);
  67. }
  68.  
  69. void intensidad(void)
  70. {
  71.    float vol,res,total=0;
  72.    system("clear");
  73.    printf("\t\tEn esta sección calcularemos la intensidad total\n"); printf("\n");
  74.    printf("Cual es el valor del voltaje total:> "); scanf("%f",&vol);
  75.    printf("Cual es el valor de la resistencai total:> "); scanf("%f",&res); printf("\n"); total=vol/res;
  76.    printf("La intensidad es: %.2f ampers",total);
  77. }
  78.  
  79. void voltaje(void)
  80. {
  81.    float res,inte,total=0;
  82.    system("clear");
  83.    printf("\t\tEn esta sección calcularemos el voltaje total\n"); printf("\n");
  84.    printf("Cual es el valor de la resistencia total:> "); scanf("%f",&res);
  85.    printf("Cual es el valor de la intensidad total:> "); scanf("%f",&inte); printf("\n"); total=res*inte;
  86.    printf("El voltaje total es: %.2f vols",total);
  87. }
  88.  


Título: Re: Fracciones en C [Ayuda]
Publicado por: DickGumshoe en 11 Febrero 2013, 01:08 am
Hola.

Para trabajar con fracciones, puedes hacer una estructura que contenga dos campos: numerador y denominador. Así, cuando sea necesario mostrar la fracción, solo debes poner en un printf numerador / denominador, y te muestra ambos, y si quieres dividir, puedes también. No sé si me he expresado bien...


Título: Re: Fracciones en C [Ayuda]
Publicado por: barnix456 en 11 Febrero 2013, 02:01 am
Ah ver si entendi, poner algo como.

printf("Escriba la fraccion:)";
printf("  /  ");
scanf("%d%d, &a,&b);


o bueno esa es la idea pero, es una buena tecnica la habia pensado, pero no habra una funcion en la que si se puedan escribir una fraccion, o solo podremos trabajar de esa manera.


Título: Re: Fracciones en C [Ayuda]
Publicado por: DickGumshoe en 11 Febrero 2013, 02:12 am
Me refería a crear un struct de esta forma:

Código
  1. #include <stdio.h>
  2.  
  3. struct division
  4. {
  5.    int numerador;
  6.    int denominador;
  7. }fraccion;
  8.  
  9. int main()
  10. {
  11.    //Las cantidades las asignamos desde donde queramos.
  12.    //Desde el programa, se las pedimos al usuario...
  13.    fraccion.numerador = 59;
  14.    fraccion.denominador = 3;
  15.  
  16.    //Queremos mostrar solo la fracción:
  17.  
  18.    printf("Resultado 1: %d / %d\n\n", fraccion.numerador, fraccion.denominador);
  19.  
  20.    //Queremos mostrar el resultado con decimales:
  21.  
  22.    printf("Resultado 2: %f", (float) fraccion.numerador / fraccion.denominador);
  23.  
  24.    return 0;
  25. }
  26.  

Así podrías trabajar con fracciones de una forma sencilla.

Otra forma que se me acaba de ocurrir, aunque es mucho más pesada y larga, es trabajar con números decimales y expresar el resultado en forma de fracción generatriz. Obviamente esta forma es más larga, supongo que lo que buscas es la primera.  ;)

Un saludo.


Título: Re: Fracciones en C [Ayuda]
Publicado por: barnix456 en 11 Febrero 2013, 02:37 am
guaoo eso se ve muy interesante, la verdad no se hacer eso de las "struct" apenas comienzo jejej pero se ve interesante... tendre que buscar algo de eso para poder hacerlo jeje gracias


Título: Re: Fracciones en C [Ayuda]
Publicado por: DickGumshoe en 11 Febrero 2013, 02:39 am
En el último caso, si no sabes usar estructuras todavía y no tienes tiempo de aprender, puedes crear dos variables numerador, denominador. No queda "tan elegante", pero sigue siendo útil.

Pero bueno, el uso del struct es bastante sencillo, no tiene más que lo que te he mostrado en el código.  ;)


Título: Re: Fracciones en C [Ayuda]
Publicado por: barnix456 en 11 Febrero 2013, 03:31 am
siii practicare apartir de ahi.. gracias por la informacion


Título: Re: Fracciones en C [Ayuda]
Publicado por: BatchianoISpyxolo en 13 Febrero 2013, 23:46 pm
Generalmente para trabajar con un cierto tidpo de dato que no existe predefinidamente en el lenguaje, lo que se hace es crear un TAD (tipo abstracto de datos) que dependiendo del lenguaje se puede implementar de una forma u otra.

Es decir, tener un tipo de dato complejo (formado a partir de tipos de datos simples) que pueda manejarse a través de rutinas para así abstraer el código y restringir el uso de cierto TAD; entre otras características.


Título: Re: Fracciones en C [Ayuda]
Publicado por: barnix456 en 16 Febrero 2013, 21:29 pm
disculpa por responder hasta ahora, habia estado ocupado en el trabajo, pasando a lo que explicaste, la verdad, todavia lo de "struct" me parecio algo mas simple de entender a lo tuyo, pero bien, como aun no se mucho de programacion lo que hice fue, hacer un arreglo, para el numerador y denominador, asi primero pedia el numerador y luego el denominador y los fui guardando en la misma posicion del arreglo:

numerador[1]=4
denominador[1]=5

y ya tenia mi fraccion 4/5

y divido los numeros y ya tengo el valor real de cada fraccion, al momento de mostrar el resultado lo muestra con decimales.

Ahora tengo otra duda, por ejemplo corro mi programa, hago una operacion con fracciones por ejemplo, al calcular la resistencia, que es sumado, sumo (2/2)+(2/2) me da de resultado 2, lo cual es correcto, el programa cuando termina de hacer la operacion pulso ENTER y regreso al menu principal, y si eligo la misma opcion de volver a calcular otra resistencia, y pongo unas fracciones como (1/2)+(1/2) y me deberia dar como resultado 1, pero me da como resultado 3, por que aun guarda en su bufer el resultado de 2.

como hago para limpiar este bufer?? busque algo como:

fflush(stdin)

while(getchar()!='\n');

pero no se como funciona?? alguien me podria explicar


Título: Re: Fracciones en C [Ayuda]
Publicado por: barnix456 en 16 Febrero 2013, 21:58 pm
Les dejo mi codigo, ya sabes lo errores, observaciones y consejos me lo dicen... estoy aprendiendo apenas.


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define sise 100
  4. void resistencia(void);
  5. void intensidad(void);
  6. void voltaje(void);
  7.  
  8. int main()
  9. {
  10.   int opc;
  11.   printf("\n");
  12.   printf ("\t\tC\tE\tP\tR\tO\tG\n");
  13.   printf("\n"); printf("\n");
  14.   printf ("\t\t\tCIRCUITOS EN SERIE \n");
  15.   printf ("\n");
  16.   printf ("Este Software se basa en la ley de OHM\n");
  17.   printf("\n");
  18.   printf("Precione ENTER para continuar\n");
  19.   getchar();
  20.   b:
  21.   system("clear");
  22.   printf("ELIJA UNA OPCCION: \n\n \t1)Calcular Resistencia\n\t2)Calcular Intensidad\n\t3)Calcular Voltaje\n\t4)Salir\n");
  23.   scanf("%d",&opc);
  24.   switch (opc)
  25.   {
  26.       case 1:
  27.       {
  28.           fflush(stdin);
  29.           resistencia();
  30.           break;
  31.        }
  32.        case 2:
  33.        {
  34.            fflush(stdin);
  35.            intensidad();
  36.            break;
  37.        }
  38.        case 3:
  39.        {
  40.            fflush(stdin);
  41.            voltaje();
  42.            break;
  43.        }
  44.        case 4:
  45.        {
  46.            exit(0);
  47.        }
  48.        default:
  49.        {
  50.            goto b;
  51.        }
  52.   }
  53.   return 0;
  54. }
  55.  
  56. void resistencia(void)
  57. {
  58.    float res, total=0,suma=0,numerador[sise], denominador[sise];
  59.    int n,cont,opc,cont1=1,n1;
  60.    a:
  61.    system("clear");
  62.    printf("\t\tRESISTENCA\n"); printf("\n");
  63.    printf("Con que tipo de datos desea calcular la resistencia:\n\n \t1)Numeros fraccionarios\n \t2)Numeros enteros/decimales\n \t3)regresar al menu anteior\n \t4)Salir\n");
  64.    fflush(stdin);
  65.    scanf("%d",&opc); switch(opc)
  66.    {
  67.        case 1:
  68.        {
  69.            system("clear");
  70.            printf("\t\tEn esta sección calcularemos la resistencia total\n"); printf("\n");
  71.            printf("Cuantas resistencias tiene el circuito: "); scanf("%d",&n); printf("\n");
  72.            fflush(stdin);
  73.            for (cont=0;cont<=n-1;cont++)
  74.            {
  75.                printf("Escribe el valor del denomiador %d (_/ ): ",cont); scanf("%f",&numerador[cont]);
  76.                printf("Escribe el valor del Denominaor %d ( /_): ",cont); scanf("%f",&denominador[cont]);
  77.                printf("\n");
  78.            }
  79.            for(cont=0;cont<=n-1;cont++)
  80.            {
  81.                suma=suma+(numerador[cont]/denominador[cont]);
  82.            }
  83.            printf("\n");
  84.            printf("El valor de la resistencia total es: %.2f Ohmios",suma);
  85.            getchar();
  86.            getchar();
  87.            system("clear");
  88.            goto a;
  89.        }
  90.        case 2:
  91.        {
  92.            fflush(stdin);
  93.            system("clear");
  94.            printf("\t\tEn esta sección calcularemos la resistencia total\n"); printf("\n");
  95.            printf("Cuantas resistencias tiene el circuito: "); scanf("%d",&n1); printf("\n");
  96.            fflush(stdin);
  97.            while (cont1<=n1)
  98.            {
  99.                printf("Escribe el valor de la resistencia %d :> ",cont1); scanf("%f",&res);
  100.                total+=res;
  101.                cont1++;
  102.            }
  103.            printf("\n");
  104.            printf("El resultado de el total de las resistencias es: %.2f ohmios",total);
  105.            getchar();
  106.            getchar();
  107.            system("clear");
  108.            goto a;
  109.        }
  110.        case 3:
  111.            main();
  112.        case 4:
  113.            exit(0);
  114.        default:
  115.            goto a;
  116.    }
  117. }
  118. void intensidad(void)
  119. {
  120.    float vol,res,total=0, numerador[sise],denominador[sise],vol1=0,vol2=0,resul;
  121.    int opc,cont;
  122.    c:
  123.    fflush(stdin);
  124.    system("clear");
  125.    printf("\t\tIntensidad\n"); printf("\n");
  126.    printf("Con que tipo de datos desea calcular la Intensidad:\n\n \t1)Numeros fraccionarios\n \t2)Numeros enteros/decimales\n \t3)regresar al menu anteior\n \t4)Salir\n");
  127.    scanf("%d",&opc); switch(opc)
  128.    {
  129.        case 1:
  130.        {
  131.            fflush(stdin);
  132.            system("clear");
  133.            printf("\t\tEn esta sección calcularemos la intensidad total\n"); printf("\n");
  134.            printf("Escribe el valor del voltaje:\n\n");
  135.            fflush(stdin);
  136.            for (cont=1;cont<=1;cont++)
  137.            {
  138.                printf("Escribe el valor del denominador (_/ ): "); scanf("%f",&numerador[cont]);
  139.                printf("Escribe el valor del Denominaor ( /_): "); scanf("%f",&denominador[cont]);
  140.                printf("\n");
  141.                vol1=vol1+(numerador[cont]+denominador[cont]);
  142.            }
  143.            fflush(stdin);
  144.            printf("Escribe el valor de la resistencia total:\n\n");
  145.            fflush(stdin);
  146.            for (cont=2;cont<=2;cont++)
  147.            {
  148.                printf("Escribe el valor del denominador (_/ ): "); scanf("%f",&numerador[cont]);
  149.                printf("Escribe el valor del Denominaor ( /_): "); scanf("%f",&denominador[cont]);
  150.                printf("\n");
  151.                vol2=vol2+(numerador[cont]+denominador[cont]);
  152.            }
  153.            resul=vol1/vol2;
  154.            printf("\n");
  155.            printf("El valor de la intensidad total es: %.2f Ampers",resul);
  156.            getchar();
  157.            getchar();
  158.            system("clear");
  159.            goto c;
  160.        }
  161.        case 2:
  162.        {
  163.            fflush(stdin);
  164.            system("clear");
  165.            printf("\t\tEn esta sección calcularemos la intensidad total\n"); printf("\n");
  166.            printf("Cual es el valor del voltaje total:> "); scanf("%f",&vol);
  167.            printf("Cual es el valor de la resistencai total:> "); scanf("%f",&res); printf("\n"); total=vol/res;
  168.            printf("La intensidad es: %.2f ampers",total);
  169.            getchar();
  170.            getchar();
  171.            system("clear");
  172.            goto c;
  173.        }
  174.        case 3:
  175.            main();
  176.        case 4:
  177.            exit(0);
  178.        default:
  179.            goto c;
  180.    }
  181. }
  182.  
  183. void voltaje(void)
  184. {
  185.    float res,inte,total=0,numerador[sise],denominador[sise],tot1=0,tot2=0,resul;
  186.    int opc,cont;
  187.    d:
  188.    fflush(stdin);
  189.    system("clear");
  190.    printf("\t\tVoltaje\n"); printf("\n");
  191.    printf("Con que tipo de datos desea calcular la Intensidad:\n\n \t1)Numeros fraccionarios\n \t2)Numeros enteros/decimales\n \t3)regresar al menu anteior\n \t4)Salir\n");
  192.    scanf("%d",&opc); switch(opc)
  193.    {
  194.        case 1:
  195.        {
  196.            fflush(stdin);
  197.            printf("\t\tEn esta sección calcularemos el voltaje total\n"); printf("\n");
  198.            printf("Cual es el valor de la resistencia total:> \n\n");
  199.            fflush(stdin);
  200.            for (cont=1;cont<=1;cont++)
  201.            {
  202.                printf("Escribe el valor del denominador (_/ ): "); scanf("%f",&numerador[cont]);
  203.                printf("Escribe el valor del Denominaor ( /_): "); scanf("%f",&denominador[cont]);
  204.                printf("\n");
  205.                tot1=tot1+(numerador[cont]+denominador[cont]);
  206.            }
  207.            fflush(stdin);
  208.            printf("Escribe el valor de la resistencia total:\n\n");
  209.            for (cont=2;cont<=2;cont++)
  210.            {
  211.                printf("Escribe el valor del denominador (_/ ): "); scanf("%f",&numerador[cont]);
  212.                printf("Escribe el valor del Denominaor ( /_): "); scanf("%f",&denominador[cont]);
  213.                printf("\n");
  214.                tot2=tot2+(numerador[cont]+denominador[cont]);
  215.            }
  216.            resul=tot1*tot2;
  217.            printf("\n");
  218.            printf("El valor de el voltaje total es: %.2f Volts",resul);
  219.            getchar();
  220.            getchar();
  221.            system("clear");
  222.            goto d;
  223.        }
  224.        case 2:
  225.        {
  226.            fflush(stdin);
  227.            system("clear");
  228.            printf("\t\tEn esta sección calcularemos el voltaje total\n"); printf("\n");
  229.            printf("Cual es el valor de la resistencia total:> "); scanf("%f",&res);
  230.            printf("Cual es el valor de la intensidad total:> "); scanf("%f",&inte); printf("\n"); total=res*inte;
  231.            printf("El voltaje total es: %.2f vols",total); fflush(stdin);
  232.            getchar(); getchar();
  233.            goto d;
  234.  
  235.        }
  236.        case 3:
  237.            main();
  238.        case 4:
  239.            exit(0);
  240.        default:
  241.            goto d;
  242.    }
  243. }

por ahora mi unica duda es eso del buffer... gracias


Título: Re: Fracciones en C [Ayuda]
Publicado por: leosansan en 17 Febrero 2013, 22:34 pm

Ahora tengo otra duda, por ejemplo corro mi programa, hago una operacion con fracciones por ejemplo, al calcular la resistencia, que es sumado, sumo (2/2)+(2/2) me da de resultado 2, lo cual es correcto, el programa cuando termina de hacer la operacion pulso ENTER y regreso al menu principal, y si eligo la misma opcion de volver a calcular otra resistencia, y pongo unas fracciones como (1/2)+(1/2) y me deberia dar como resultado 1, pero me da como resultado 3, por que aun guarda en su bufer el resultado de 2.



El problema que te aparece no tiene nada que ver con el buffer,

¡ ¡ ¡ quita todos los "fflush(stdin)" del código que no hacen nada ¡ ¡ ¡ .

Es más sencillo y el culpable en el fondo es el goto.

Lo que ocurre es que cada vez que hace una llamada el goto debe encontrar las variables que acumulan o suman con valor de cero o uno en el caso de un contador que tienes por ahí, pero lo que se encuentran es a esas variables con el valor que han tomado anteriormente, de ahí que sumen al valor viejo el nuevo.

Ese efecto lo corriges asignando nuevamente ,después de la etiqueta a la que llama el goto, esas variables a sus valores originales. por ejemplo, en el caso de la resistencia tendrías que poner:


Código
  1. void resistencia(void)
  2. {
  3.    float res, total=0,suma=0,numerador[sise], denominador[sise];
  4.    int n,cont,opc,cont1=1,n1;
  5.    a:
  6.    total=0,suma=0,cont1=1; /* <==AQUI INICIALIZAS NUEVAMENTE */
  7.    system("clear");
  8.    printf("\t\tRESISTENCA\n\n");
  9.     ..................


Si tienes duda pregunta nuevamente. :rolleyes:

Saluditos!.


P.D: En todo caso habría que poner un "fflush(stdout)" después de cada printf no terminado en \n y ... pero en fin, eso es otro tema.

REEDITO: Perdona que te cambie system (clear) a system (cls) pero así es como me funciona.

Te faltaba además algunos break, tenías entrada de dos resistencias fraccionarias en el cálculo del voltaje -porqué dos o no 3 o 5- y te he cambiado los goto por while, también nombrabas a Numerador como denominador y ya que usas system, en lugar de dos getchar seguidos yo pondría un system(pause). Revisa no obstante por si se ha colado algún gazapo:


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define sise 100
  4.  
  5. void resistencia(void);
  6. void intensidad(void);
  7. void voltaje(void);
  8. /***************************************************/
  9. int main()
  10. {
  11.   int opc;
  12.   printf("\n");
  13.   printf ("\t\tC\tE\tP\tR\tO\tG\n");
  14.   printf("\n"); printf("\n");
  15.   printf ("\t\t\tCIRCUITOS EN SERIE \n");
  16.   printf ("\n");
  17.   printf ("Este Software se basa en la ley de OHM\n");
  18.   printf("\n");
  19.   printf("Precione ENTER para continuar\n");
  20.   getchar();
  21.   while (1){
  22.    system("cls");
  23.     printf("ELIJA UNA OPCCION: \n\n \t1)Calcular Resistencia\n\t2)Calcular Intensidad\n\t3)Calcular Voltaje\n\t4)Salir\n");
  24.     scanf("%d",&opc);
  25.     switch (opc)
  26.     {
  27.         case 1:
  28.         {
  29.             resistencia();
  30.             break;
  31.          }
  32.          case 2:
  33.          {
  34.              intensidad();
  35.              break;
  36.          }
  37.          case 3:
  38.          {
  39.              voltaje();
  40.              break;
  41.          }
  42.          case 4:
  43.          {
  44.              exit(0);
  45.          }
  46.        }
  47.   }
  48.   return 0;
  49. }
  50. /***************************************************/
  51. void resistencia(void)
  52. {
  53.    float res, total=0,suma=0,numerador[sise], denominador[sise];
  54.    int n,cont,opc,cont1=1,n1;
  55.    while (1){
  56.      total=0,suma=0,cont1=1; /* <==AQUI INICIALIZAS NUEVAMENTE */
  57.      system("cls");
  58.      printf("\t\tRESISTENCA\n\n");
  59.      printf("Con que tipo de datos desea calcular la resistencia:\n\n \t1)Numeros fraccionarios\n \t2)Numeros enteros/decimales\n \t3)regresar al menu anteior\n \t4)Salir\n");
  60.      scanf("%d",&opc);
  61.       switch(opc)
  62.      {
  63.          case 1:
  64.          {
  65.              system("cls");
  66.              printf("\t\tEn esta sección calcularemos la resistencia total\n\n");
  67.              printf("Cuantas resistencias tiene el circuito: ");
  68.              scanf("%d",&n);
  69.              printf("\n");
  70.              for (cont=0;cont<=n-1;cont++)
  71.              {
  72.                  printf("Escribe el valor del Numerador %d (_/ ): ",cont); scanf("%f",&numerador[cont]);
  73.                  printf("Escribe el valor del Denominador %d ( /_): ",cont); scanf("%f",&denominador[cont]);
  74.                  printf("\n");
  75.              }
  76.              for(cont=0;cont<=n-1;cont++)
  77.              {
  78.                  suma=suma+(numerador[cont]/denominador[cont]);
  79.              }
  80.              printf("\n");
  81.              printf("El valor de la resistencia total es: %.2f Ohmios",suma);
  82.              getchar();getchar();
  83.              break;
  84.          }
  85.          case 2:
  86.          {
  87.              system("cls");
  88.              total=0;cont1=1;
  89.              printf("\t\tEn esta sección calcularemos la resistencia total\n\n");
  90.              printf("Cuantas resistencias tiene el circuito: ");
  91.              scanf("%d",&n1);
  92.              printf("\n");
  93.              while (cont1<=n1)
  94.              {
  95.                  printf("Escribe el valor de la resistencia %d :> ",cont1);
  96.                  scanf("%f",&res);
  97.                  total+=res;
  98.                  cont1++;
  99.              }
  100.              printf("\n");
  101.              printf("El resultado de el total de las resistencias es: %.2f ohmios",total);
  102.              getchar();getchar();
  103.              break;
  104.          }
  105.          case 3:
  106.              main();
  107.              break;
  108.          case 4:
  109.              exit(0);
  110.        }
  111.    }
  112. }
  113. /***************************************************/
  114. void intensidad(void)
  115. {
  116.    float vol,res,total=0, numerador[sise],denominador[sise],vol1=0,vol2=0,resul;
  117.    int opc,cont;
  118.    while (1){
  119.      system("cls");
  120.      printf("\t\tIntensidad\n"); printf("\n");
  121.      printf("Con que tipo de datos desea calcular la Intensidad:\n\n \t1)Numeros fraccionarios\n \t2)Numeros enteros/decimales\n \t3)regresar al menu anteior\n \t4)Salir\n");
  122.      scanf("%d",&opc); switch(opc)
  123.      {
  124.          case 1:
  125.          {
  126.              system("cls");
  127.              printf("\t\tEn esta sección calcularemos la intensidad total\n"); printf("\n");
  128.              printf("Escribe el valor del voltaje:\n\n");
  129.              for (cont=1;cont<=1;cont++)
  130.              {
  131.                  printf("Escribe el valor del Numerador (_/ ): "); scanf("%f",&numerador[cont]);
  132.                  printf("Escribe el valor del Denominador ( /_): "); scanf("%f",&denominador[cont]);
  133.                  printf("\n");
  134.                  vol1=vol1+(numerador[cont]+denominador[cont]);
  135.              }
  136.              printf("Escribe el valor de la resistencia total:\n\n");
  137.              for (cont=2;cont<=2;cont++)
  138.              {
  139.                  printf("Escribe el valor del Numerador (_/ ): "); scanf("%f",&numerador[cont]);
  140.                  printf("Escribe el valor del Denominador ( /_): "); scanf("%f",&denominador[cont]);
  141.                  printf("\n");
  142.                  vol2=vol2+(numerador[cont]+denominador[cont]);
  143.              }
  144.              resul=vol1/vol2;
  145.              printf("\n");
  146.              printf("El valor de la intensidad total es: %.2f Ampers",resul);
  147.              getchar();getchar();
  148.              system("cls");
  149.              break;
  150.          }
  151.          case 2:
  152.          {
  153.              system("cls");
  154.              printf("\t\tEn esta sección calcularemos la intensidad total\n"); printf("\n");
  155.              printf("Cual es el valor del voltaje total: "); scanf("%f",&vol);
  156.              printf("Cual es el valor de la resistencai total: "); scanf("%f",&res); printf("\n"); total=vol/res;
  157.              printf("La intensidad es: %.2f ampers",total);
  158.              getchar();getchar();
  159.              break;
  160.          }
  161.          case 3:
  162.              main();
  163.          case 4:
  164.              exit(0);
  165.        }
  166.    }
  167.  
  168. }
  169. /***************************************************/
  170. void voltaje(void)
  171. {
  172.    float res,inte,total=0,numerador,denominador,tot1=0,resul;
  173.    int opc;
  174.    while (1) {
  175.      system("cls");
  176.      tot1=0;
  177.      printf("\t\tVoltaje\n\n");
  178.      printf("Con que tipo de datos desea calcular la Intensidad:\n\n \t1)Numeros fraccionarios\n \t2)Numeros enteros/decimales\n \t3)regresar al menu anteior\n \t4)Salir\n");
  179.      scanf("%d",&opc); switch(opc)
  180.      {
  181.          case 1:
  182.          {
  183.              printf("\t\tEn esta sección calcularemos el voltaje total\n\n");
  184.              printf("Cual es el valor de la resistencia total: \n\n");
  185.              printf("Escribe el valor del Numerador (_/ ): "); scanf("%f",&numerador);
  186.              printf("Escribe el valor del Denominador ( /_): "); scanf("%f",&denominador);
  187.              printf("\n");
  188.              tot1=(numerador/denominador);
  189.              printf("Cual es el valor de la intensidad total: "); scanf("%f",&inte); printf("\n");
  190.              resul=inte*tot1;
  191.              printf("El valor de el voltaje total es: %.2f Volts",resul);
  192.              getchar();getchar();
  193.              break;
  194.          }
  195.          case 2:
  196.          {
  197.              system("cls");
  198.              printf("\t\tEn esta sección calcularemos el voltaje total\n\n");
  199.              printf("Cual es el valor de la resistencia total: "); scanf("%f",&res);
  200.              printf("Cual es el valor de la intensidad total: "); scanf("%f",&inte); printf("\n"); total=res*inte;
  201.              printf("El voltaje total es: %.2f vols",total);
  202.              getchar();getchar();
  203.              break;
  204.  
  205.          }
  206.          case 3:
  207.              main();
  208.              break;
  209.          case 4:
  210.              exit(0);
  211.        }
  212.    }
  213.  
  214. }
  215. /***************************************************/
  216.  


Título: Re: Fracciones en C [Ayuda]
Publicado por: 0xDani en 18 Febrero 2013, 16:17 pm
@leosansan, te dejo un truco de preprocesador que he usado mas de una vez aqui para limpiar la pantalla:

Código
  1. #ifdef __unix__ /* Estamos en *nix */
  2. #define clscr() system("clear");
  3. #elif defined __WIN32 /* Estamos en windows */
  4. #define clscr() system("cls");
  5. #else
  6. #warning Missing clear screen function
  7. #endif
  8.  
  9. /* En el codigo puedes usar clscr() tranquilamente para limpiar la pantalla */
  10.  
  11.  


Título: Re: Fracciones en C [Ayuda]
Publicado por: leosansan en 18 Febrero 2013, 16:57 pm
@leosansan, te dejo un truco de preprocesador que he usado mas de una vez aqui para limpiar la pantalla:
.....................................................................................

Muchas gracias, la verdad es que lo veo muy útil. ;-)

Saluditos!.


Título: Re: Fracciones en C [Ayuda]
Publicado por: BatchianoISpyxolo en 18 Febrero 2013, 23:22 pm
@leosansan, te dejo un truco de preprocesador que he usado mas de una vez aqui para limpiar la pantalla:

Código
  1. #ifdef __unix__ /* Estamos en *nix */
  2. #define clscr() system("clear");
  3. #elif defined __WIN32 /* Estamos en windows */
  4. #define clscr() system("cls");
  5. #else
  6. #warning Missing clear screen function
  7. #endif
  8.  
  9. /* En el codigo puedes usar clscr() tranquilamente para limpiar la pantalla */
  10.  
  11.  

¿Y Para Mac OS? *.* xD


Título: Re: Fracciones en C [Ayuda]
Publicado por: 0xDani en 19 Febrero 2013, 16:23 pm
¿Y Para Mac OS? *.* xD

1) I don't give a shit about Mac OS
2) La idea queda clara, solo hay que buscar la macro que debe estar definida en Mac OS
3) *Creo* que __unix__ esta definida en Mac OS


Título: Re: Fracciones en C [Ayuda]
Publicado por: barnix456 en 23 Febrero 2013, 14:38 pm
gracias por tu aporte leosansan disculpa por responder hasta ahora, es que por mi trabajo me ocupo toda la semana, y lamentablemente donde no voy no hay cobertura de red movil, pero gracias por tus consejos, no sabia que el while se podria usar como un goto, y que el goto provocaba esos errores, y el system("pause") nunca lo habia usadado, checare ahora el codigo gracias.


0xDani Gracias por tu aporte para limpiar mas facilmente la pantalla, si es muy bueno, lo hace mas rapido, gracias de nuevo.

Cualquier duda y aclaracion la publico mas al rato, gracias a todos.