Vous êtes sur la page 1sur 3

18/9/2015

Arreglos

Arreglos
Losarreglossonlasestructurasdedatosmssencillas.
Definicin:Losarreglossonungrupodeposicionesenmemoriarelacionadasentresporelhechode
quetodastienenelmismonombreylosdatosquecontienesontodosdelmismotipo.
Sonentidadesestticasyaqueconservanelmismotamaodurantetodalaejecucindelprograma.
Para poder referirnos a una posicin en particular o al datos dentro de esa posicin del arreglo, se
especificaelnombredelarregloyelnmerodeposicindelelemento.Lasposicionesgeneralmente
secuentanapartirdelcerocomoprimeraposicin.
Declaracindeunarreglo:
Seledaunnombreysedefinesutamaoyeltipodedatosquevaacontener(caracteres,enteros,
reales,etc.)
EnC:
intarreglo[10]/*unarreglode10enteros*/
floatarreglo[10]/*unarreglode10reales*/
chararreglo[10]/*unarreglode10caracteres*/

Altas,BajasyCambios
Altaenunarreglo:Severificaquehayaespacioyseinsertaelelementoenlaposicindisponible.Si
elarreglotieneunordendeterminadohayquebuscarlaposicincorrectaprimero,luegorecorrerlos
elementosparagenerarunespacioyfinalmenteseinsertaeldato.
Altaenunarreglo(secuencial)
/* dato es el elemento a dar de alta y pos indica la posicin
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 posicin */
}
}

Altaenunarreglo(ordenado)
/* dato es el elemento a dar de alta y cantidad indica el nmero de
datos existentes. Este procedimiento inserta un dato en un arreglo de enteros
en orden ascendente */
http://ict.udlap.mx/people/ingrid/Clases/IS211/Arreglos.html

1/3

18/9/2015

Arreglos

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 vaco */
{
arr[0] = dato; /* Inserta el dato */
*cantidad++; /* Incrementa la cantidad */
}
else
{
pos = 0;
for(i=0; i<MAX; i++) /* Busca la posicin */
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 */
}
}
}

Bajaenunarreglo
Paraeliminarunelementodeunarregloprimeroseverificaqueno
estvacoelarreglo,luegosebuscaeldato,seeliminay,deser
necesario,serecorrenlosdemsparacubrirelespacioquequed.
baja(int arr[], int dato, int *cantidad)
{
int i, pos;
if(*cantidad == 0) /* Verifica si hay datos */
printf("Error: el arreglo esta vaco");
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
Paramodificarunelementodeunarregloprimeroseverificaqueno
http://ict.udlap.mx/people/ingrid/Clases/IS211/Arreglos.html

2/3

18/9/2015

Arreglos

estvacoelarreglo,luegosebuscaeldato,ysemodifica.
cambio(int arr[], int dato, int cantidad, int nuevo)
{
int i, pos;

if(cantidad == 0) /* Verifica si hay datos */


printf("Error: el arreglo esta vaco");
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;
}

http://ict.udlap.mx/people/ingrid/Clases/IS211/Arreglos.html

3/3

Vous aimerez peut-être aussi