febrero 26, 2013

DAR DE ALTA, BAJA Y CAMBIOS CON ARREGLOS EN C

Alta en un arreglo (secuencial)

 /* dato es el elemento a dar de alta y pos indica la posición
disponible */

alta(int arr[], int dato, int *pos)
{
 if(*pos == MAX) /* Verifica si esta lleno */
  printf("Error: el arreglo esta lleno");
 else
 {
  arr[*pos] = dato; /* Inserta el dato */
  *pos++;  /* Incrementa la posición */
 }
}






Alta en un arreglo (ordenado)

/* dato es el elemento a dar de alta y cantidad indica el número de
datos existentes. Este procedimiento inserta un dato en un arreglo de enteros 
en orden ascendente */

alta_ordenada(int arr[], int dato, int *cantidad)
{
 int i, pos;

  if(*cantidad == MAX) /* Verifica si esta lleno */  
  printf("Error: el arreglo esta lleno");
 else
 {
  if(*cantidad == 0) /* El arreglo esta vacío */
  {
   arr[0] = dato; /* Inserta el dato */
   *cantidad++; /* Incrementa la cantidad */
  }
  else
  {
   pos = 0;
   for(i=0; i<MAX; i++) /* Busca la posición */
    if(dato >= arr[i]) 
     pos = ++;
   if(pos == *cantidad) /* Es el último */
    arr[pos] = dato; /* Inserta el dato */
   else
   { /* Recorre los datos para hacer espacio para el nuevo*/
    for(i=cantidad; i>=pos; i--)
     arr[i] = arr[i-1];
    arr[pos] = dato; /* Inserta el dato */
    *cantidad++;/* Incrementa cantidad */
   }
  }
 }
}





Baja en un arreglo

Para eliminar un elemento de un arreglo primero se verifica que no esté vacío el arreglo, luego se busca el dato, se elimina y, de ser necesario, se recorren los demás para cubrir el espacio que quedó.

baja(int arr[], int dato, int *cantidad)
{
 int i, pos;
 if(*cantidad == 0) /* Verifica si hay datos */
  printf("Error: el arreglo esta vacío");
 else
 {
  pos = -1; /* Recorre el arreglo buscando dato */
  for(i=0; i<cant;i++)
   if(arr[i] == dato) /* Si lo encontró */
    pos = i;
  if(pos == -1) /* No lo encontró */
   printf("Error: No se encontró el dato %d", dato);
  else
  { /* Recorre los datos eliminando el que se encontraba en pos*/
   for(i=pos; i<*cantidad-1; i++)
    arr[i] = arr[i+1];
   *cantidad--; /* Decrementa cantidad */
  }
 }
}




Cambio

Para modificar un elemento de un arreglo primero se verifica que no esté vacío el arreglo, luego se busca el dato, y se modifica.


cambio(int arr[], int dato, int cantidad, int nuevo)
{
 int i, pos;

  if(cantidad == 0) /* Verifica si hay datos */
  printf("Error: el arreglo esta vacío");
 else
 {
  pos = -1;
  for(i=0; i<MAX;i++) /* Recorre el arreglo buscando dato */
  if(arr[i] == dato) /* Si lo encontró */
   pos = i;
  if(pos == -1) /* No lo encontró */
   printf("Error: No se encontró el dato %d", dato);
  else
   arr[pos] = nuevo;
 }
}



No hay comentarios:

Publicar un comentario