Foros del Web » Programación para mayores de 30 ;) » Programación General »

Como vaciar un arreglo en X posicion?

Estas en el tema de Como vaciar un arreglo en X posicion? en el foro de Programación General en Foros del Web. Hola Mi duda es si existe alguna instruccion para vaciar o limpiar un arreglo en cierta posicion. Tengo un arreglo que tiene varios datos numericos ...
  #1 (permalink)  
Antiguo 17/06/2005, 11:23
Avatar de Hazek  
Fecha de Ingreso: julio-2002
Ubicación: En mi casa :D ó ?
Mensajes: 418
Antigüedad: 21 años, 9 meses
Puntos: 3
Como vaciar un arreglo en X posicion?

Hola
Mi duda es si existe alguna instruccion para vaciar o limpiar un arreglo en cierta posicion.

Tengo un arreglo que tiene varios datos numericos y necesito que en cierta posicion del arreglo dependiendo de su valor me lo limpie, por ejemplo mi arreglo[10] tiene un valor de 16, entonces como le hago para que en la posicion k (o 10 para citar el ejemplo) en el arreglo no haya nada , intente hacerlo arreglo[k] = ' '; y me devuelve 32 (me imagino y es por que el espacio en ASCII es el 32 o simplemente es un valor en ese registro de la memoria o algo asi...).

Posiblemente no halla sigo muy especifico intentare poner un ejemplo mas detallado:

for(x=i-1;x>=0;x--)
{
if(re[x]==10)
{
printf("%s","A"); //segun yo va %c pero no jala
re[x]= COMO DARLE VALOR "NADA" JEJE
}
printf("%d",re[x]);
}

En este caso el for va en retroceso haciendo que mi arreglo "re" se acomode en la posicion x (osea en retroceso) pero necesito que si se encuentra que el valor de re en la posicion x es igual a 10 (re[x]==10) me lo sustituya por una A, lo he intentado de varias formas y de cierta manera funciona por que me imprime el caracter de A pero en ASCII osea 65(y eso que le digo q sea tipo char y he usado typecasting tambien y nada y de hecho se por que hace eso pero no se como corregirlo) entonces probe esta forma que esta en el codigo y funciona bien pero me imprime la A y me imprime tambien en valor del arreglo cuando yo solo quiero que me imprima A y ya no el valor del arreglo (osea 10) , en otras palabras que me lo sustituya por A en vez de 10.

Pero como mencione que no me sale asi, intente hacer eso que les digo y me di cuenta que no se hacer que un arreglo en X posicion valga "nada" o bien se borre.

Espero haber sido claro.
__________________
Tecnologias: Flash Platform, Java (Spring, HB, Struts, Grails), iOS, Android, JavaScript, PHP, SQL (MySQL, Oracle), Prolog, Assembler (PIC's) y Arduino - Electronica.
  #2 (permalink)  
Antiguo 17/06/2005, 12:13
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Para que valga nada obviamente se le asigna el valor 0. Para usar %c tenes que usar un caracter y no una cadena de caracteres.

Código:
void main()
{
  char re[] = 
  {
    0x42, 0x42, 0xA, 0x42, 0x0
  };
  int i = strlen(re);
  for(int x = i - 1; x; x--)
  {
    if(re[x] == 10)
    {
      printf("%c", 'A');
      re[x] = 0;
    }
    else { printf("%c",re[x]);  }
  }
}
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Última edición por Eternal Idol; 17/06/2005 a las 12:23
  #3 (permalink)  
Antiguo 17/06/2005, 12:29
Avatar de Hazek  
Fecha de Ingreso: julio-2002
Ubicación: En mi casa :D ó ?
Mensajes: 418
Antigüedad: 21 años, 9 meses
Puntos: 3
Gracias por tu ayuda.
Con respecto a lo de %c o %s si ya sabia que %s era para una cadena de caracteres pero es curioso que aveces tengo que jugar con estos valores pues hace un comportamiento algo extraño cuando compilo con Borland, por eso le puse %s y jalo bien. ----YA VI EL POR QUE, ESQUE OLVIDE QUE '' = CARACTER y "" = cadena , por eso me funciona... OK

Ahora con respecto a lo de limpiar un arreglo ya habia intentado con ponerle un valor igual a 0 y me Imprime el valor de 0

Mira de que deben existir muchas formas "mas inteligentes" o faciles de hacer esto seguramente que las hay pero lo que me intereza por el momento es como hacer para que omita el valor del arreglo en X posicion.

Ahi te va un programa muy sencillo que estoy haciendo para que entiendas mucho mejor el por que quiero hacer esto:

Código:
#include <iostream.h>

main()
{
	int num,i,co,k,re[100];
             //He intentado tambien char re[100];

	printf("\nIntroduce un numero: ");
	scanf("%d",&num);
	
	co = num;
	for(i=0;co!=0;i++)
	{
		re[i] = co%16;
		co = co/16;
	}
	printf("\nEl numero en HEXADECIMAL es: ");
	
	for(k=i-1;k>=0;k--)
	{
	if(re[k]==10)
	   {

	    printf("%c",'A');
	    re[k] = 0; // Me IMPRIME este valor y yo quiero y no lo imprima.

                }   // Y ya no tiene caso poner las letras B,C,D,E,F por que seria añadir mas 0 que no van tambien.
	printf("%d",re[k]);	
	}
	
}
__________________
Tecnologias: Flash Platform, Java (Spring, HB, Struts, Grails), iOS, Android, JavaScript, PHP, SQL (MySQL, Oracle), Prolog, Assembler (PIC's) y Arduino - Electronica.

Última edición por Hazek; 17/06/2005 a las 12:42
  #4 (permalink)  
Antiguo 17/06/2005, 12:36
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Podes hacer exactamente lo mismo que en el codigo que te mostre con un simple else.

Código:
if(re[k]==10)
{
  printf("%c",'A');
  re[k] = 0;
}
else
{
  printf("%d",re[k]);
}
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 17/06/2005, 12:57
Avatar de Hazek  
Fecha de Ingreso: julio-2002
Ubicación: En mi casa :D ó ?
Mensajes: 418
Antigüedad: 21 años, 9 meses
Puntos: 3
Sip ;)

Pero me añade el cero, osea en vez de decirle al arreglo que no hay ningun valor, me imprime el O tambien, pruebalo.
Para un Valor 890 en entero , su valor hexadecimal es 37A y mi programa me imprime 37A0 --> El ultimo 0 que se le esta indicando con re[k]=0; Y esto no lo deseo.
__________________
Tecnologias: Flash Platform, Java (Spring, HB, Struts, Grails), iOS, Android, JavaScript, PHP, SQL (MySQL, Oracle), Prolog, Assembler (PIC's) y Arduino - Electronica.
  #6 (permalink)  
Antiguo 17/06/2005, 13:32
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Código:
if (re[k])
{
  //imprimir valor
}
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #7 (permalink)  
Antiguo 19/06/2005, 16:03
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Jejeje, creo que es lo que masomenos te dije en otra ocasion, no?
Eternal Idol tiene razon.

Saludos
  #8 (permalink)  
Antiguo 19/06/2005, 16:07
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Olvidaba algo muy muy curioso:
Cita:
printf("%s","A"); //segun yo va %c pero no jala
Porque usar eso si se pede usar:

printf("A");

Alomejor por eso no te jalaba, y por cierto, para %c en vez de usar comillas dobles, se usa comillas simples('), por eso no te jalaba.

Namas checa esas cosillas medio extrañas que pusiste.

Y olvidaba algo.
Se me hace extraño que imprima el valor de 0, ya que 0 en el codigo asci es "nada" precisamente. Mas bien como que estas jugando un poco con los int y los chars.

Pero bueno, cualquier duda aqui estamos.

Saludos
  #9 (permalink)  
Antiguo 20/06/2005, 09:01
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por Firma de Hazek
MaxGate DX OS ::Creando un S.O.::
¿Estás programando un sistema operativo?

Lo digo porque me suena raro dado tu nivel de C...
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 10:58.