Tengo un par de problemas en el siguiente programa:
Main: se encarga de recibir por pantalla los patametros robotx orden y metros en una misma linea a y a la vez, e imprimir los codigos de control despues de llamar a las 2 funciones.
La funcion Robot_valido con el parametro robotx , comprueba que hemos introducido correctamente la palabra robot junto con x(numero entre 1 y 5 inclusive), esta parte funciona bien. Pero si introzuco exit no sale del programa como quiero.
y el otro problema es que la segunda funcion no recibe bien los parametros, he probado con printf en varias zonas del programa y parece como si se machacaran los parametros orden y metros.
aqui os dejo el codigo a ver si me podeis echar un cable.
Código:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int Robot_valido (char *robotx);
int Orden_valida (char *orden, char *metros);
main ()
{
int uno,dos;
char robotx[6];
char orden[9];
char metros[2];
uno=0;
while (uno!=2) /* si ponemos exit uno=2 finaliza el programa*/
{
printf("#\n");
scanf("%s %s %s",robotx,orden,metros);
fflush(stdin);
uno=Robot_valido (robotx);
printf("%i\n",uno);/*imprimimos codigo de control de robotx*/
if (uno==0)/* si robotx esta bien uno=0, sino pide de nuevo robot*/
{
dos=Orden_valida(orden,metros);
printf("%i\n",dos);/*imprimimos codigo de control de orden y metros*/
}
}
}
int Robot_valido (char *robotx)
{
char exit[]="exit";
char robot[]="robot";
char aux;
if ((strcmp(exit,robotx)) != 0)
{
if (strncmp(robot,robotx,5)==0)/* comparamos los 5 primeros caracteres de robotx con "robot"*/
{
strcpy(&aux,robotx+5);/* copiamos x de robotx en aux*/
if ((1<=atoi(&aux))&&(atoi(&aux)<=5))/* si x entre 1 y 5 correcto*/
{
printf("Identificador: ");
printf("%s\n",robotx);
return 0;
}
else
{
printf("numero identificador no valido\n");
return 1;
}
}
else
{
printf("robot no valido\n");
return 1;
}
}
else
{
printf("salimos\n");
return 2;
}
}
int Orden_valida (char *orden,char *metros)
{
char arriba[10]="arriba";
char abajo[10]="abajo";
char izquierda[10]="izquierda";
char derecha[10]="derecha";
int i;
if ((strcmp(orden,arriba)) == 0)
{
printf("Orden: arriba\n");
i=0;
}
else if ((strcmp(orden,abajo)) == 0)
{
printf("Orden: abajo\n");
i=0;
}
else if ((strcmp(orden,izquierda)) == 0)
{
printf("Orden: izquierda\n");
i=0;
}
else if ((strcmp(orden,derecha)) == 0)
{
printf("Orden: derecha\n");
i=0;
}
else
{
printf("Orden no valida\n");
i=1;
}
if (i==0)/*si orden no valida i=1*/
{
if ((1<=atoi(metros))&&(atoi(metros)<=80))/*comparamos si metros esta entre 1 y 80*/
{
printf("Metros: ");
printf("%s\n",metros);
return 0;
}
else
{
printf("Numero de metros no valido\n");
return 1;
}
}
else
{
return 1;
}
}
he editado un poco el codigo para actualizarlo a la ultima version que tengo pero que aun asi sigue fallando en lo mismo.
Muchas gracias de antemano