1. Con una cuenta podrás:

    • Publicar preguntas y pedir ayuda
    • Crear tutoriales
    • Acceder a contenido privado
    • Convertirte en un Héroe de la web
    Cerrar notificación
  2. Eres nuevo en la comunidad y necesitas ayuda?
    Sigue estos pasos y recomendaciones antes de publicar tu duda:
    Cerrar notificación

Problemas en Switch anidado

Tema en 'C / C++' comenzado por Edward GR, 11 de Enero de 2015.

  1. Edward GR

    Edward GR Nuevo Miembro

    Se incorporó:
    11 de Enero de 2015
    Mensajes:
    1
    Me gusta recibidos:
    0
    Puntos de trofeos:
    1
    Género:
    Hombre
    Hola, tengo un problema con un programa en C, es un programa que trata de ayudarte a resolver problemas de fisica, Fuerza de Vectores y Momentos (Toques), el problema es que quiero un menu que te de a elejir que quieres resolver, si la Fuerza de Vectores o los Torques, de ahi te pide el numero de fuerzas (1-10), el programa funciona bien, exepto que al juntar ambos programas y poner el switch de eleccion (menu), al seleccionar la opcion, debes escribir 2 veces la opcion para que funcione, y una vez que entraste al programa secundario, te marca como opcion no reconocida y autormaticamente termina el programa. Espero me puedan ayudar con este conflicto, muchas gracias!
    PHP:
    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>

    main(void){
       
        int a,b,c,d;

        float M1,M2,M3,M4,M5,M6,M7,M8,M9,M10;
        float F1,F2,F3,F4,F5,F6,F7,F8,F9,F10;

        float M1x,M2x,M3x,M4x,M5x,M6x,M7x,M8x,M9x,M10x;
        float F1x,F2x,F3x,F4x,F5x,F6x,F7x,F8x,F9x,F10x;
        float M1y,M2y,M3y,M4y,M5y,M6y,M7y,M8y,M9y,M10y;
        float F1y,F2y,F3y,F4y,F5y,F6y,F7y,F8y,F9y,F10y;

        float F1cos,F2cos,F3cos,F4cos,F5cos,F6cos,F7cos,F8cos,F9cos,F10cos;
        float F1sen,F2sen,F3sen,F4sen,F5sen,F6sen,F7sen,F8sen,F9sen,F10sen;

        float F1An,F2An,F3An,F4An,F5An,F6An,F7An,F8An,F9An,F10An;

        float B1x,B2x,B3x,B4x,B5x,B6x,B7x,B8x,B9x,B10x;
        float B1y,B2y,B3y,B4y,B5y,B6y,B7y,B8y,B9y,B10y;

        float SFx,SFy,Ang,AngP,F,angt1,angt2,angt3,A,M;
        char ciclo;
        int op,hor;
       
        printf("Resuelve Tus Problemas de Fisica, Elige la Opcion\n");
        printf("1. Obten la Fuerza Resultante de los Vectores \n");
        printf("2. Obten el Momento Resultante de las Fuerzas \n");
        scanf("%d%",&a);
       
        switch(a){
            default:
                printf("\nOpcion no Reconocida");
            break;
           
           
            case 1:
           
                  printf("Calcula la Fuerza Resultante de Hasta 10 Vectores \n");
                  printf("Esta es SUMA de Fuerzas, por lo tanto deberas convertir los angulos para que tus fuerzas se sumen correctamente \n");
                  printf("Indica el Numero Total de Vectores (2-10) \n");
                  scanf("%d",&b);
               
                  switch(b){
                        default:
                        printf("\nOpcion no Reconocida");
                        break;

                        case 2:
                                printf("Deberas Escribir la Fuerza del Vector y  su Angulo, \nEn este orden y Separados por un Espacio \n" );
                                printf("Escribe el Valor del Vector 1: ");
                                scanf("%f %f",&F1,&F1An);
                                printf("Escribe el Valor del Vector 2: ");
                                scanf("%f %f",&F2,&F2An);

                                printf("\nSFx= %.1fCos(%.1f)+%.1fCos(%.1f) \n",F1,F1An,F2,F2An);
                                printf("SFy= %.1fsen(%.1f)+%.1fsen(%.1f) \n",F1,F1An,F2,F2An);
                                F1cos=cos(F1An*3.1416/180);    F2cos=cos(F2An*3.1416/180);
                                F1sen=sin(F1An*3.1416/180);    F2sen=sin(F2An*3.1416/180);
                                printf("\nF1cos=%.4f F2cos=%.4f",F1cos,F2cos);
                                printf("\nF1sen=%.4f F2sen=%.4f",F1sen,F2sen);

                                SFx=F1*F1cos+F2*F2cos;
                                SFy=F1*F1sen+F2*F2sen;
                                printf("\nSFx=%.4f   SFy=%.4f",SFx,SFy);

                                printf("\n\nFuerza Resultante= Raiz(SFx^2+SFy^2)\n");
                                F=sqrt(pow(SFx,2)+pow(SFy,2));
                                printf("F=%.4f \n",F);

                                printf("\nAngulo=ArcTan(SFy/SFx)");
                                AngP=atan(SFy/SFx)*180/M_PI;
                                printf("\nAngulo=%.4f",AngP);

                                if(AngP>360){
                                    angt1=Ang-360;
                                    if(angt1>360){
                                        angt2=angt1-360;
                                        if(angt2>360){
                                            angt3=360-angt2;
                                            A=angt3;
                                        }
                                        else A=angt2;
                                    }
                                    else A=angt1;
                                }
                                if(AngP<0){
                                    A=-(AngP);
                                }
                                else{
                                    A=AngP;
                                }

                                printf("\nAngulo Corregido=%.4f",A);

                                if((SFx>0)&&(SFy>0)){
                                    printf("\nF queda en el 1er Cuadrante");
                                    printf("\nAng se mantiene");
                                    Ang=A;
                                    printf("\nEl Angulo Final es %.4f",Ang);
                                }
                                if((SFx<0)&&(SFy>0)){
                                    printf("\nF queda en el 2o Cuadrante");
                                    printf("\n180-Ang");
                                    Ang=180-A;
                                    printf("\nEl Angulo Final es %.4f",Ang);
                                }
                                if((SFx<0)&&(SFy<0)){
                                    printf("\nF queda en el 3er Cuadrante");
                                    printf("\n180+Ang");
                                    Ang=180+A;
                                    printf("\nEl Angulo Final es %.4f",Ang);
                                }
                                if((SFx>0)&&(SFy<0)){
                                    printf("\nF queda en el 4o Cuadrante");
                                    printf("\n360�-Ang");
                                    Ang=360-A;
                                    printf("\nEl Angulo Final es %.4f",Ang);
                                }

                                for(int i=0;i<=0;i++){
                                    printf("\n\nLa Fuerza Resultante es (%.2fu, %.2f%c)\n",F,Ang,167);
                                }

                                system("pause");
                                return 0;
                        break;
                      case 3:
                      //* Se Continua con el proceso para 3 fuerzas, etc...
                      break;
                      case 4:
                      break;
                      case 5:
                      break; //* Dejo hasta aqui, de lo contrario seria muy largo el codigo
                }
            break;
           
            case 2:
               printf("Calcula el Momento Resultante de hasta 10 Fuerzas \n");
               printf("Selecciona tu metodo de resolucion \n 1. Metodo de descomposicion \n 2. Metodo de suma \n 3. Descomponer fuerzas");
               scanf("%d,&c");

                switch(c){
                    default:
                        printf("\n Opcion no Reconocida");
                    break;
       
                    case 1:
                        printf("Metodo de Descomposicion\n M= F1x(b)+F1y(b)+F2x(b)+F2y(b) \n Donde F#x es la fuerza N (Newtons) en el eje X y F#y en el eje Y \n Donde b es el Brazo de palanca (Metros) respecto a su respectiva fuerza X/Y \n \n");
                        printf("Introduce el numero de fuerzas (1-10) \n");
                        scanf("%d",&d);
       
                        switch(d){
                            default:
                                printf("Opcion no Reconocida");
                            break;
       
                            case 1:
                                printf("M=F1x(b)+F1y(b)\n");
                                printf("Deberas Escribir la Fuerza y su Brazo de Palanca \n En este orden y Separados por un Espacio \n");
       
                                printf("Escribe el Valor de la Fuerza 1x\n");
                                scanf("%f %f",&F1x,&B1x);
                                printf("Escribe el Valor de la Fuerza 1y\n");
                                scanf("%f %f",&F1y,&B1y);
       
                                printf("M1=%.1fN(%.1fm)+%.1fN(%.1fm)\n");
       
                                M1x=F1x*B1x;
                                M1y=F1y*B1y;
       
                                printf("M=%.1fNm+%.1fNm\n",M1x,M1y);
       
                                M=M1;
       
                                printf("El Momento Resultante es %.4fNm\n",M);
       
                            break;
       
                            case 2:
                            break;
       
                            case 3:
                            break;
       
                            case 4:
                            break;
       
                            case 5:
                            break;
       
                            case 6:
                            break;
       
                            case 7:
                            break;
       
                            case 8:
                            break;
       
                            case 9:
                            break;
       
                            case 10:
                            break;
                        }
                    break;
                    case 2:
                        //Metodo 2
                    break;
                   
                    case 3:
                        //Metodo 4
                    break;
                }  
            break;
        }
       
    }
     
     
  2. orlandoisay

    orlandoisay Nuevo Miembro

    Se incorporó:
    12 de Enero de 2015
    Mensajes:
    5
    Me gusta recibidos:
    7
    Puntos de trofeos:
    3
    Género:
    Hombre
    Ocupación:
    Estudiante
    Localización:
    Moroleon, Gto
    Hola Edward, el problema está en esta parte:
    la línea donde lees la opción del usuario debería estar así:
     
    A selpeca y Side Master les gusta esto.
  3. Side Master

    Side Master
    Moderador

    Se incorporó:
    6 de Enero de 2015
    Mensajes:
    257
    Me gusta recibidos:
    208
    Puntos de trofeos:
    43
    Género:
    Hombre
    Ocupación:
    Estudiante
    Página web:
    La respuesta de @orlandoisay es correcta compañero, espero revises y comentes haber que si te ha funcionado.
     
    A Strong Backers le gusta esto.
  4. agusti

    agusti
    Moderador

    Se incorporó:
    8 de Enero de 2015
    Mensajes:
    260
    Me gusta recibidos:
    106
    Puntos de trofeos:
    43
    Género:
    Hombre
    @Edward GR Confírmanos si ha sido resuelto tu problema.
     
  5. neftaliacosta

    neftaliacosta Miembro

    Se incorporó:
    12 de Junio de 2015
    Mensajes:
    52
    Me gusta recibidos:
    7
    Puntos de trofeos:
    8
    Género:
    Hombre
    Yo cuando utilizo Swich aveces tengo tenía esos inconvenientes, lo resolvía así:

    Código (Text):
    a=getche();
    Avísanos si te sirvió lo que los compañeros te comparte. Saludos.
     

Comparte esta página