Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/03/2012, 15:21
cesarbuf
 
Fecha de Ingreso: marzo-2012
Mensajes: 1
Antigüedad: 12 años, 2 meses
Puntos: 0
Problema parametros funcion

Hola a todos, soy nuevo en la programacion C y tambien en el foro.

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];
	
	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;
	}
}
Muchas gracias de antemano