Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Arreglo con numero

Estas en el tema de Arreglo con numero en el foro de C/C++ en Foros del Web. Hola, les cuento lo que tengo que hacer... tengo que hacer que el usuario ingrese 5 numeros por la entrada estandar, y tengo q meterlos ...
  #1 (permalink)  
Antiguo 16/05/2009, 07:19
 
Fecha de Ingreso: diciembre-2008
Mensajes: 31
Antigüedad: 15 años, 4 meses
Puntos: 0
Arreglo con numero

Hola, les cuento lo que tengo que hacer...

tengo que hacer que el usuario ingrese 5 numeros por la entrada estandar, y tengo q meterlos en un arreglo de chars, el problema es que si mete mas de 5 o menos de 5 pida devuelta hasta que ingrese la cantidad justa y dsp de eso tengo q validar que no sean repetidos necesito ayuda plz!!

Código:
int leerNumero( int lectura[] ){
	int i,c;
	i=0;
	while(c=getchar() != '\n'){
	c= c - '0';
	lectura[i]=c;
	i++;
	}
}
supestamente con eso tengo que poder meter todos los que quiera y sacar la cantidad que ingreso el usuario .. pero ni siquiera eso me sale !!
  #2 (permalink)  
Antiguo 16/05/2009, 12:52
 
Fecha de Ingreso: diciembre-2004
Mensajes: 163
Antigüedad: 19 años, 4 meses
Puntos: 2
Respuesta: Arreglo con numero

mmm, esa función tiene errores:

- dices que devuelve un int cuando en realidad no pones ningún return

ahora tienes que tener en cuenta que alli estas leyendo algo así como todos los números hasta que se ingrese el \n, entonces a esa función tienes que pasarle un array de int (así es como lo tienes en los parámetros) pero ojo, ese array debe tener la memoria suficiente para que ingreses esa cantidad de int

entonces tienes que ver las opciones , o pides un array con mucha memoria para almacenar los números, o compruebas antes cuantos números ingreso y si se pasa de 5 le pides que ingrese de nuevo o si hay menos de 5 lo mismo, y posteriormente lo almacenas en un array (no me queda claro si los quieres en un array de int o char)

ojala te sirva.
  #3 (permalink)  
Antiguo 16/05/2009, 13:47
 
Fecha de Ingreso: diciembre-2008
Mensajes: 31
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Arreglo con numero

lo que quiero es exactamente lo segundo

quiero pasarle por ejemplo un vector de 5 int y que si el usuario pone mas de 5 o menos de 5 numeros pida devuelta., la funcion no retorna nada,pone la entrada de 5 numeros de un usuario en un vector y nada mas...

y lo quiero hacer sin scanf si es posible porque no tengo manera de saber cuantos pone el usuario con esta ultima funcion.
  #4 (permalink)  
Antiguo 16/05/2009, 14:30
 
Fecha de Ingreso: diciembre-2008
Mensajes: 31
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Arreglo con numero

Código:
#define CTE 5
#define BORRA_BUFFER while (getchar() != '\n')


main(){
	int i,c,j,flag;
	int vector[5]={0};
	flag=0;
	while(!flag){
		i=0;
		c='1'; /*Condicion para que ingrese la primera vez 
(quiero ver si se puede cambiar por otra cosa */
		while( c != 10 && c <= '9' && c>='0' ){
			c=getchar();
			if(isalpha(c))
				break; /*el break queda feo, 
lo puedo cambiar por un c=10 o algo asi me parece */
			vector[i++]= c-'0';
		}
		i--;
		if(i==5)
			flag=1; /* sale del ciclo*/
		else{
			printf("Parametro Incorrecto, Presione Enter y Escriba otro numero");
			BORRA_BUFFER; /* El problema aca es que si no apreta enter 
y pone otra cosa el programa falla 
¿¿hay alguna otra manera de borrar el buffer ??*/
			flag=0;
		}
		
	}
Aca funciona pero comente un par de cosas que no me gustan..

me faltaria validar si tiene numeros repetidos pero eso es facil...
  #5 (permalink)  
Antiguo 16/05/2009, 17:59
 
Fecha de Ingreso: diciembre-2008
Ubicación: Vigo, Spain
Mensajes: 141
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Arreglo con numero

Cita:
Iniciado por Yawe Ver Mensaje
/* El problema aca es que si no apreta enter
y pone otra cosa el programa falla
¿¿hay alguna otra manera de borrar el buffer ??*/
fflush(stdin);
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:10.