Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Problema con Menu en C

Estas en el tema de Problema con Menu en C en el foro de C/C++ en Foros del Web. Buenas noches programadores de forosweb, me encuentro realizando un menu que hace 4 operaciones, el menu va bien pero tengo un problemita que no se ...
  #1 (permalink)  
Antiguo 25/01/2014, 22:31
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 10 años, 3 meses
Puntos: 0
Problema con Menu en C

Buenas noches programadores de forosweb, me encuentro realizando un menu que hace 4 operaciones, el menu va bien pero tengo un problemita que no se como solucionarlo, el menu debe preguntar al usuario si desea realizar nuevamente la operacion , con un do while en el case lo soluciono pero si no quiere seguir la operacion debe enviarlo al menu principal sin usar un goto aqui les dejo el codigo aver que sugerencias me dan gracias de antemano, he colocado 2 operaciones, las otras 2 las colocare cuando sepa como hacer lo que he dicho xD

Código:
#include <stdio.h>
#include <conio.h>

main()
{
int num;
char resp;

printf(" Bienvenidos al programa  AN_ T1T213 que resolvera 4 operaciones: \n" );
printf("Seleccione la operacion que desea realizar \n");
printf("1- Factorial de un numero\n");
printf("2- Suma de elementos que no se encuentran en la diagonal principal de un matriz\n");
printf("3- Ecuacion de 2do grado aplicando la discriminante\n");
printf("4- Dividir polinomio con un binomio aplicando ruffini\n");
scanf("%d",&num);

switch (num)
         {
              case 1: 
                   do
                   {
                                
              int fact,i;
               fact=1;
               printf("Ingrese elemento del que desea el factorial \n");
               scanf("%d",&num);
                                for (i=1;i <=num; i++)
                                {
                                fact = fact*i;
                                }
                                 printf("El factorial de %d es %d\n",num,fact);
                                 printf("Desea saber otro factorial?");
                                 scanf("%s",&resp);
                     }
                                 while(resp=='s');
                                 break;
 
                                   case 2:
                                        do
                                        {
              
              int A[5][5],n,m,i,j,acum,sum;
              acum=0;
              sum=0;
      
      
               printf("Introducir las filas de la matriz: \n");
               scanf("%d",&n);
               printf("Introducir las columnas de la matriz: \n");
               scanf("%d",&m);
      
      
                               for (i=1;i<=n;i++)
                               for (j=1;j<=m;j++)
                               {
                               printf("[%d],[%d] =",i,j);
                               scanf("%d",&A[i][j]);
                                   if (i==j)
                                   {
                
                                   }
                                   else 
                                   {
                                   sum=sum+A[i][j];
                                   }
                                 }
          printf("La suma de los elementos que no se encuentran en la diagonal principal de la matriz %d x %d es = %d \n",n,m,sum);
            printf("Desea realizar otro suma de elementos que no se encuentran en una matriz?");
                                 scanf("%s",&resp);
                                 }
                                 while(resp=='s');
                                 break;
}
                            
getch();
}
  #2 (permalink)  
Antiguo 26/01/2014, 03:38
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Problema con Menu en C

¿Que te parece esta solucion? ;)
Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. main() {
  5.     int num;
  6.     char resp;
  7.     int terminar,killb1,killb2;
  8.  
  9.     printf(" Bienvenidos al programa  AN_ T1T213 que resolvera 4 operaciones: \n\n" );
  10.     do {
  11.         terminar = killb1 = killb2 = 0; // inicialisamos los bucles a 0
  12.         printf("Seleccione la operacion que desea realizar \n\n");
  13.         printf("1- Factorial de un numero\n");
  14.         printf("2- Suma de elementos que no se encuentran en la diagonal principal de un matriz\n");
  15.         printf("3- Ecuacion de 2do grado aplicando la discriminante\n");
  16.         printf("4- Dividir polinomio con un binomio aplicando ruffini\n\n");
  17.         printf ("opcion:"); scanf("%d",&num);printf ("\n\n");
  18.  
  19.         switch (num) {
  20.         case 1:
  21.             do {
  22.  
  23.                 int fact,i;
  24.                 fact=1;
  25.                 printf("Ingrese elemento del que desea el factorial \n");
  26.                 scanf("%d",&num);
  27.                 for (i=1; i <=num; i++) {
  28.                     fact = fact*i;
  29.                 }
  30.                 printf("El factorial de %d es %d\n\n",num,fact);
  31.                 printf ( "Deseas realizar un nuevo factorial?\n1-si\n0-no" );
  32.                 scanf("%d", &killb1 );
  33.                 killb1 = (( killb1 == 1 ) ? 0 : 1 );
  34.             } while( !killb1 );
  35.             break;
  36.  
  37.         case 2:
  38.             do {
  39.  
  40.                 int A[5][5],n,m,i,j,acum,sum;
  41.                 acum=0;
  42.                 sum=0;
  43.  
  44.  
  45.                 printf("Introducir las filas de la matriz: \n");
  46.                 scanf("%d",&n);
  47.                 printf("Introducir las columnas de la matriz: \n");
  48.                 scanf("%d",&m);
  49.  
  50.  
  51.                 for (i=1; i<=n; i++)
  52.                     for (j=1; j<=m; j++) {
  53.                         printf("[%d],[%d] =",i,j);
  54.                         scanf("%d",&A[i][j]);
  55.                         if (i==j) {
  56.  
  57.                         } else {
  58.                             sum=sum+A[i][j];
  59.                         }
  60.                     }
  61.                 printf("\nLa suma de los elementos que no se encuentran en la diagonal principal de la matriz %d x %d es = %d \n\n",n,m,sum);
  62.                 printf ( "Deseas realizar una nueva suma?\n1-si\n0-no" );
  63.                 scanf("%d", &killb2 );
  64.                 killb2 = (( killb2 == 1 ) ? 0 : 1 );
  65.             } while( !killb2 );
  66.             break;
  67.         }
  68.  
  69.         printf ( "Deseas hacer otra operacion?\n1-si\n0-no" );
  70.         scanf("%d", &terminar );
  71.         terminar = (( terminar == 1 ) ? 0 : 1 );// si no es 0 es 1 ;), 0 sigue, 1 rompe el bucle ;)
  72.  
  73.  
  74.  
  75.     } while( !terminar ); // si terminar no es verdadero fin.
  76.  
  77.         getch();
  78. }
  #3 (permalink)  
Antiguo 26/01/2014, 05:23
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Problema con Menu en C

Vango gracias, justo lo que necesitaba ahora me tocara analizar bien esos whiles, una pregunta entonces para las otras dos operaciones necesito la variable killb3 y killb4 no ? , y otra pregunta esta linea del codigo
Cita:
killb1 = (( killb1 == 1 ) ? 0 : 1 );
lo que hace es decir Si el valor de killb es 1 sigue y lo demas como lo interpreto ? gracias de antemano

Última edición por TriN; 26/01/2014 a las 05:28
  #4 (permalink)  
Antiguo 26/01/2014, 05:51
Avatar de iFuSiiOnzZ  
Fecha de Ingreso: junio-2012
Mensajes: 8
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Problema con Menu en C

killb1 = (siEsVerdad)? [devolverValor1] enCasoContrario [devolverValor2]
Caso contrario son los :. Básicamente seria como un if else, asignandole a killb1 un valor o otro dependiendo de la condición.
  #5 (permalink)  
Antiguo 26/01/2014, 05:51
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Problema con Menu en C

claro ;)
por 2 variables mas no muere nadie XD
Se puede hacer con una pero creo que es mucho cambio.
una vez que termines de usarla la devuelves el valor.
pero yo lo haría como has dicho ;)
  #6 (permalink)  
Antiguo 26/01/2014, 05:55
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Problema con Menu en C

Listo chicos gracias por su pronta y rapida orientacion ya entendi
  #7 (permalink)  
Antiguo 26/01/2014, 05:59
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Problema con Menu en C

Ese operador "?" se llama operador ternario.
Es muy útil y compacto.
¡Y si! Eso es justo lo que hace, se parece a un if-else pero en una sola linea :D
Eso nos garantiza que si la persona no pulsa 1, cualquier otra tecla sera == 0 :D ( O pulsa 1 para continuar o cualquier otra para salir ;).
Le pedimos el cero por pedir, pero si le pulsas 'e', 'm' o lo que sea, sale.
Muy bueno operador :D
Para cosas sencillas claro.
Suerte!

Etiquetas: int, numero, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:48.