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