elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problema parametros funcion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema parametros funcion  (Leído 2,340 veces)
sargo

Desconectado Desconectado

Mensajes: 1


Ver Perfil
problema parametros funcion
« en: 22 Marzo 2012, 22:23 pm »

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];

        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


« Última modificación: 23 Marzo 2012, 10:40 am por sargo » En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: problema parametros funcion
« Respuesta #1 en: 24 Marzo 2012, 00:36 am »

Bienvenido al foro, a simple viste tienes varios errores, uno de ellos es hacer fflush al stdin ya que esta función solo se utiliza para flujos de SALIDA. Además estás declarando tu arreglo robotx[] de 6 caracteres cuando tendría que ser de 7 ya que debes dejar espacio para el carácter nulo (\0).

Otra cosa, lo correcto es que la función main retorne un entero.


En línea

Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: problema parametros funcion
« Respuesta #2 en: 24 Marzo 2012, 00:39 am »

Tenés muchos errores pero probé tu programa y funcionó. Cuando me pide los datos y escribo 'exit' finaliza correctamente.
Tal vez no entendí bien tu pregunta. De todas formas te digo que me parece bastante desorganizado hacer un programa de esa manera.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
funcion que devuelva 4 parametros
Programación C/C++
mapers 3 4,728 Último mensaje 4 Diciembre 2010, 04:51 am
por mapers
puntero de una funcion con dos parametros.
Programación Visual Basic
LeandroA 1 2,841 Último mensaje 12 Septiembre 2011, 00:34 am
por Karcrack
Parámetros en main y función Sleep()
Programación C/C++
Saberuneko 5 4,975 Último mensaje 14 Junio 2012, 16:07 pm
por 0xDani
funcion recibe dos parametros « 1 2 »
Programación C/C++
ALONSOQ 18 8,957 Último mensaje 2 Septiembre 2012, 17:56 pm
por xiruko
Problema al recibir parametros con jax-ws
Java
Sindakil 0 1,307 Último mensaje 23 Enero 2013, 18:00 pm
por Sindakil
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines