Вы находитесь на странице: 1из 8

Laboratorio de Computación l

Arreglos en C
Los arreglos son una colección de variables del mismo tipo que se referencian utilizando un
nombre común.

Características
● Un arreglo consta de posiciones de memoria contigua de igual tamaño consecutivas que tienen el
mismo tipo de variable.
● La dirección más baja corresponde al primer elemento y la más alta al último.
● Un arreglo puede tener una o varias dimensiones.
● Para acceder a un elemento en particular de un arreglo se usa el nombre del arreglo seguido de
un índice entre corchetes.
● La cantidad total de espacio que se usa por un arreglo depende de 2 cosas: El número de
elementos en el arreglo y El tamaño del arreglo.
● Los arreglos en C es que no se pueden modificar los limites superior e inferior (y por tanto el
rango) durante el programa. El límite inferior se fija siempre en 0 y el superior lo fija el
programador.
Arreglo Unidimensional
El formato para declarar un arreglo unidimensional es:
tipo nombre_arr [ ​tamaño​ ]
Para declarar un arreglo de enteros llamado ​listanum​ con diez elementos se hace de la siguiente forma:
int listanum[10];
En C, todos los arreglos usan cero como índice para el primer elemento. Por tanto, el ejemplo anterior
declara un arreglo de enteros con diez elementos desde ​listanum[0] (primer elemento) hasta
listanum[9] ​(último elemento).
Ejemplo
#include <stdio.h>
void main()
{
int lista[9];
int i;

/*Cargar elementos en el arreglo*/


for(i = 0; i < 9; i++)
{
printf("Ingresar el elemento %d:\n",i);
scanf("%d",&lista[i]);
}
/*Mostrar los elementos del arreglo*/
for(i = 0; i < 9; i++)
printf("Digito %d:%d\n",i,lista[i]);
}
Otra forma de inicializar un arreglo es la siguiente:
tipo nombre_arr[ ​tamaño​] = {lista-valores};
Ejemplo de Arreglo Unidimensional
/*Utilizacion de arreglos*/
#include <stdio.h>

void main()
{

int lista[9]= {0, 4, 78, 5, 32, 9, 77, 1, 23};


int i;

for(i = 0; i < 9; i++)


printf("Digito %d:%d\n",i,lista[i]);
}

Operaciones con Arreglos


● Inicializar un arreglo.
● Recorrer un arreglo
● Ordenar un arreglo
● Modificar un arreglo
● Eliminar un elemento de un arreglo
● Buscar un elemento
Operaciones de Búsqueda
Un algoritmo de búsqueda es aquel que está diseñado para localizar un elemento concreto dentro de un
arreglo.
Consiste en solucionar un problema booleano de existencia o no de un elemento determinado en un
conjunto finito de elementos, es decir al finalizar el algoritmo este debe decir si el elemento en cuestión
existe o no en ese conjunto (si pertenece o no a él), además, en caso de existir, el algoritmo podría
proporcionar la localización del elemento dentro del conjunto.
Cuando el contenido del Vector no está o no puede ser ordenado, se necesita realizar una búsqueda
completa, ya que, en principio, la existencia se puede asegurar desde el momento que el elemento es
localizado, pero no podemos asegurar la no existencia hasta pasar por el último elemento.
En una búsqueda completa, se debería recorrer todos los elementos secuencialmente y, si el elemento
es localizado, devolver verdadero (o su posición dentro del vector). Si el elemento no es localizado se
sigue recorriendo todo el vector hasta llegar al último elemento y si llegamos al final y no lo hemos
encontrado se devuelve falso.
Búsqueda Binaria
La ​búsqueda binaria​ o ​búsqueda dicotómica​ es un algoritmo de búsqueda.
Para realizarla, es necesario contar con un array o vector ordenado.
Se toma un elemento central, normalmente el elemento que se encuentra a la mitad del arreglo, y se lo
compara con el elemento buscado. Si el elemento buscado es menor, se toma el intervalo que va desde
el elemento central al principio, en caso contrario, se toma el intervalo que va desde el elemento central
hasta el final del intervalo.
Se procede de esta manera con intervalos cada vez menores hasta que se llega a un intervalo indivisible,
en cuyo caso el elemento no está en el vector, o el elemento central sea el elemento buscado.
Por ejemplo, para buscar el elemento 3 en el array {1,2,3,4,5,6,7,8,9} se realizarían los siguientes pasos:

Se toma el elemento central y se divide el array en dos:


{1,2,3,4}-5-{6,7,8,9}

Como el elemento buscado (3) es menor que el central (5), debe estar en el primer subarray: {1,2,3,4}

Se vuelve a dividir el array en dos:


{1}-2-{3,4}
Como el elemento buscado es mayor que el central, debe estar en el segundo subarray: {3,4}
Se vuelve a dividir en dos:
{}-3-{4}
Como el elemento buscado coincide con el central, se ha encontrado el elemento buscado.

Si al final de la búsqueda todavía no se ha encontrado el elemnto buscado, y el subarray a dividir está


vacio {}, el elemento no se encuentra en el array.

#include <stdio.h>
void main()
{
int lista[9]= {0, 4,5 ,7, 32, 40, 77, 100,123};
int i,inicio,final,medio,num;

for(i = 0; i < 9; i++)


printf("Digito %d:%d\n",i,lista[i]);

/*busqueda binaria*/
printf("Ingresar el numero a buscar:\n");
scanf("%d",&num);

inicio = 0;
final = 9 - 1; /*n-1, n es la cantidad de elementos del arreglo*/

while ((inicio <= final) && num!=lista[medio] )


{
medio = (inicio + final) / 2;

if (num > lista[medio])


inicio = medio + 1;
else
final = medio - 1;
}

if (num == lista[medio])
printf(" %d encontrado en la posicion %d\n",num,medio);
else
printf(" %d no esta en el arreglo\n",num);
}
Operaciones de Ordenamiento
Es la operación de ordenar un arreglo en algún orden de acuerdo a un criterio de ordenamiento.
El ordenar un grupo de datos significa mover los datos o sus referencias para que queden en una
secuencia tal que represente un orden

Tipos de ordenamientos​:
Los 2 tipos de ordenamientos que se pueden realizar son: los internos y los externos.

Los internos:
Son aquellos en los que los valores a ordenar están en memoria principal.

Los externos:
Son aquellos en los que los valores a ordenar están en memoria secundaria (disco, cinta, cilindro
magnético, etc).

Algoritmos de ordenamiento:
Internos:
1. Inserción directa.
1. Inserción directa.
2. Inserción binaria.
2. Selección directa.
1. Selección directa.
3. Intercambio directo.
1. Burbuja.
2. Shake.
4. Inserción disminución incremental.
1. Shell.
5. Ordenamiento de árbol.
1. Heap.
2. Tournament.
6. Sort particionado.
1. Quick sort.
7. Merge sort.
8. Radix sort.
9. Cálculo de ​dirección​.
Externos:
1. Straight merging.
2. Natural merging.
3. Balanced multiway merging.
4. Polyphase sort.
5. Distribution of initial runs.
Clasificación de los ​algoritmos​ de ordenamiento de ​información​:
El hecho de que la ​información está ordenada, implica que sirve para ​poder encontrarla y accesarla de
manera más eficiente ya que de lo contrario se tendría que hacer de manera secuencial.
A continuación se describirán 4 ​grupos​ de ​algoritmos​ para ordenar ​información​:
Algoritmos de inserción:
En este tipo de ​algoritmo los elementos que van a ser ordenados son considerados uno a la vez. Cada
elemento es INSERTADO en la posición apropiada con respecto al resto de los elementos ya ordenados.
Entre estos ​algoritmos se encuentran el de INSERCION DIRECTA, SHELL SORT, INSERCION BINARIA
y HASHING.
Algoritmos de intercambio:
En este tipo de ​algoritmos se toman los elementos de dos en dos, se comparan y se INTERCAMBIAN si
no están en el orden adecuado. Este ​proceso se repite hasta que se ha analizado todo el conjunto de
elementos y ya no hay intercambios.
Entre estos algoritmos se encuentran el BURBUJA y QUICK SORT.
Algoritmos de selección:
En este tipo de algoritmos se SELECCIONA o se busca el elemento más pequeño (o más grande) de
todo el conjunto de elementos y se coloca en su posición adecuada. Este ​proceso se repite para el resto
de los elementos hasta que todos son analizados.
Entre estos algoritmos se encuentra el de ​SELECCION​ DIRECTA.
Algoritmos de enumeración:
En este tipo de algoritmos cada elemento es comparado contra los demás. En la comparación se cuenta
cuántos elementos son más pequeños que el elemento que se está analizando, generando así una
ENUMERACION. El número generado para cada elemento indicará su posición.
Los ​métodos simples son: Inserción (o por inserción directa), selección, burbuja y shell, en dónde el
último es una extensión al ​método de inserción, siendo más rápido. Los ​métodos más complejos son el
quick-sort (ordenación rápida) y el heap sort.
Guía de Trabajos Prácticos:​ARREGLOS

Ejercicio Nº 1:​A partir del siguiente código realizar las siguientes actividades:
■ Completar los siguientes códigos en C y ejecutarlos.
■ ¿Qué se muestra en pantalla cuando se ejecutan las sentencias de cada uno
de los casos siguientes:
1)
int n,m;
int producto[3][3];
for(n=1; n<=3;n++)
for(m=1;m<=3;m++)
producto[n-1][m-1] = n*m;

for(n=2; n>=0;n--)
for(m=2;m>=0;m--)
cout<<producto[n][m];

2)
int n,m;
double promedio[3]={0.0,0.0,0.0};
for(n=1; n<=3;n++)
{

for(m=1;m<=3;m++)
{
promedio[n-1] = promedio[n-1] +n*m;
}
promedio[n-1] = promedio[n-1]/3.0;
}
for(m=2;m>=0;m--)
cout<<promedio[m];

Ejercicio N°2:
Realizar un programa que permita realizar las siguientes tareas en un arreglo numérico de 15 elementos
en el siguiente orden:

2. Ingresar por pantalla los 15 elementos, verificando que solo sean mayores que 10 y
menores que 100.
3. Hallar la suma de los números ingresados.
4. Mostrar e indicar la cantidad de números pares.
5. Eliminar los elementos repetidos e indicar cuantos elementos fueron eliminados y la
dimensión actual.
6. Ordenar el arreglo de menor a mayor.
7. Usando búsqueda binaria, indicar si en el arreglo se encuentra un numero ingresado
por pantalla. La búsqueda finaliza cuando se ingresa un 0.
8. Reemplazar por 2 los números primos.

Ejercicio Nº 3:
Para el siguiente arreglo de números enteros, realizar los ejercicios propuestos:
2 6 8 9 1 3 5 5 7 8 9 3 4 5 1
3 7 5 0
0

a) Ingresar los elementos del arreglo por teclado y mostrar por pantalla los elementos del arreglo
indicando su posición.

b) ​Calcular el producto de los elementos del arreglo.

c) Calcular la suma de los elementos del arreglo, la suma de los elementos pares, la suma de elementos
impares. Verificar que la suma de los elementos sea igual a la suma de los elementos pares e impares.

d) Reemplazar los números menores que diez por el resultado de su cuadrado.

e) ​Eliminar los elementos repetidos, indicar el nuevo tamaño del arreglo y mostrar su composición.
Ordenar el arreglo en orden creciente y mostrar el resultado obtenido.

Ejercicio Nº 4:
Dada las siguientes temperaturas observadas en un experimento del laboratorio de quimica:

23 11 34 5 6 31 35 56 40 22

a) Mostrar el valor mínimo y el valor máximo e indicar a que observación corresponde. Calcular el
promedio de las temperaturas observadas.

b) Ordenar las temperaturas en orden decreciente.

Ejercicio Nº 5:
Se tienen 10 empleados en una compañía y se ha decidido completar :
● Un arreglo que contiene los sueldos de los empleados,
● Un arreglo que contiene las asignaciones totales de cada empleado.
● Un arreglo con las deducciones de cada empleado.

Se pide:
● Calcular el neto a pagar a cada empleado y guardarlo en otro arreglo.
● Mostrar el sueldo neto a pagar a cada empleando indicando: sueldo bruto, asiganaciones y
deducciones.
● Indicar el máximo y mínimo sueldo a pagar.

Sueldo neto= Sueldo bruto+ Asignciones-Deducciones

Ejercicio Nº 5:
Realizar la búsqueda de un elemento en un arreglo desordenado sin elementos repetidos. No ordenar el
arreglo.

Ejercicio Nº 7:
Realizar la búsqueda de un elemento en un arreglo desordenado con elementos repetidos. No ordenar el
arreglo. Indicar cuantas veces esta repetido el elemento en el arreglo.

Ejercicio Nº 8:
Realizar la búsqueda de un elemento en un arreglo ordenado sin elementos repetidos. No ordenar el
arreglo.

Ejercicio Nº 9:
Realizar la búsqueda de un elemento en un arreglo ordenado con elementos repetidos. No ordenar el
arreglo. Indicar cuantas veces está repetido el elemento en el arreglo.

Arreglo Bidimensional
Se declaran de la siguiente manera:
tipo nombre_arreglo_bi[tamaño][tamaño];
Estos también son comúnmente conocidas como Matrices, El tamaño en la declaración
de la matriz estipula Renglon-Columna y se representarían así:

Estos también se pueden inicializar:


Int lista_nueva[2][2]={{14, 34},{23, 67}};

1
Arreglos

Вам также может понравиться