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:
Muchas gracias de antemano #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]; scanf("%s %s %s",robotx,orden,metros); while (uno!=2) /* si ponemos exit uno=2 finaliza el programa*/ { printf("#\n"); 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; } }