Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/09/2015, 02:04
uriel_bla
 
Fecha de Ingreso: septiembre-2015
Mensajes: 3
Antigüedad: 8 años, 7 meses
Puntos: 0
Pregunta Problema con las variables en C

Saludos, mi problema es con un programa en C que tiene que dar instrucciones a un motor a pasos para poder mover el alerón de un avión, en realidad el programa ya lo tengo hecho y es el siguiente:
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <windows.h>
  3. #include <conio.h>
  4.  
  5. int main()
  6. {
  7.     int opcion,p=1,px=0,x;
  8.     float ang=0;
  9.     reinstruccion:
  10.     printf("PROGRAMA PARA MOVER UN ALERON\n\n");
  11.     printf("Para elejir direcci%cn hacia arriba presiona 1.\n",162);
  12.     printf("Para elejir direcci%cn hacia abajo presiona 2.\n",162);
  13.     printf("Para salir del programa presiona 3.\n");
  14.     scanf("%i",&opcion);
  15.     switch(opcion)
  16.     {
  17.                   case 1:
  18.                   printf("¿Cu%cntos pasos muevo el aler%cn: \n",160,162);
  19.                   scanf("%i",&p);                        
  20.                   if(p<=25)
  21.                   {
  22.                         while(1){
  23.                   x=1; ang=ang+1.8; px=px+1;
  24.                   printf("Paso = %i  A un angulo de: %f grados,  Dato enviado al puerto = %i\n",px,ang,x);
  25.                   if(px>=p)break;
  26.                   x=2; ang=ang+1.8; px=px+1;
  27.                   printf("Paso = %i  A un angulo de: %f grados,  Dato enviado al puerto = %i\n",px,ang,x);
  28.                   if(px>=p)break;
  29.                   x=4; ang=ang+1.8; px=px+1;
  30.                   printf("Paso = %i  A un angulo de: %f grados,  Dato enviado al puerto = %i\n",px,ang,x);
  31.                   if(px>=p)break;
  32.                   x=8; ang=ang+1.8; px=px+1;
  33.                   printf("Paso = %i  A un angulo de: %f grados,  Dato enviado al puerto = %i\n",px,ang,x);
  34.                   if(px>=p)break;
  35.                   }
  36.                   }
  37.                   else
  38.                   {
  39.                          printf("No es un caso v%clido\n\n",160);
  40.                   }
  41.                   break;
  42.                   case 2: printf("¿Cu%cntos pasos muevo el aler%cn: \n",160,162);
  43.                   scanf("%i",&p);
  44.                   if(p<=25)
  45.                   {
  46.                            while(1){
  47.                   x=8; ang=ang+1.8; px=px+1;
  48.                   printf("Paso = %i  A un angulo de: %f grados,  Dato enviado al puerto = %i\n",px,ang,x);
  49.                   if(px>=p)break;
  50.                   x=4; ang=ang+1.8; px=px+1;
  51.                   printf("Paso = %i  A un angulo de: %f grados,  Dato enviado al puerto = %i\n",px,ang,x);
  52.                   if(px>=p)break;
  53.                   x=2; ang=ang+1.8; px=px+1;
  54.                   printf("Paso = %i  A un angulo de: %f grados,  Dato enviado al puerto = %i\n",px,ang,x);
  55.                   if(px>=p)break;
  56.                   x=1; ang=ang+1.8; px=px+1;
  57.                   printf("Paso = %i  A un angulo de: %f grados,  Dato enviado al puerto = %i\n",px,ang,x);
  58.                   if(px>=p)break;
  59.                   }
  60.                   }
  61.                   else
  62.                   {
  63.                       printf("No es un caso v%clido\n\n",160);
  64.                   }
  65.                   break;
  66.                   case 3:
  67.                        system("pause");
  68.                        exit (0);
  69.                   break;
  70.                   default: printf("No es un caso v%clido\n\n",160);
  71.     }
  72.     goto reinstruccion;
  73. }

Pero el problema surge cuando lo ejecuto, se supone que al ejecutarlo y dar la instrucción de cuantos pasos tiene que recorrer el motor, el programa tiene que sacar la secuencia de pasos que se le pidió, además del ángulo de movimiento y el número del dato enviado al puerto,y posteriormente al terminar la ejecución de las instrucciones tiene que permitirme volver a empezar el proceso y ejecutar las instrucciones desde cero como la primera vez. Lo últimono no sucede con mi programa, al ingresar las instrucciones la primera vez, el programa las ejecuta bien, pero al terminar esas instrucciones y volver a dar otras, el programa no las ejecuta desde cero, sigue la secuencia en donde se quedo la ejecución de las instrucciones anteriores. Mi profesor dijo algo de que tenía que reiniciar variables, pero no le entendí, por eso les pido de favor su ayuda para resolver el problema, se que es un programa muy sencillo, pero en realidad soy novato en tanto programación ya que lo que yo estudio es Ing. Aeroespacial, espero me puedan responder y gracias.

*Así es como se tiene que ejecutar el programa:


*Así se ejecuta el mío:


Por si no se ven las imágenes, el primer link es la ejecución correcta y el segundo es de la incorrecta:
https://onedrive.live.com/?id=E90264D6367A6D61%21730&cid=E90264D6367A6D61&gr oup=0&parId=root&authkey=%21AGNhDeGU0BMZapI&o=OneU p

https://onedrive.live.com/?id=E90264D6367A6D61%21731&cid=E90264D6367A6D61&gr oup=0&parId=root&authkey=%21AGNhDeGU0BMZapI&o=OneU p

Última edición por uriel_bla; 24/09/2015 a las 02:26