Ejemplos explicados de arreglos en lenguaje C

Ejemplos explicados de arreglos en lenguaje C

En éste artículo veremos: cómo crear arreglos, cómo asignar valores a un arreglo, cómo mostrar el contenido de un arreglo, cómo sumar todos los datos de un arreglo, cómo obtener los valores máximo y mínimo pertenecientes a un arreglo, y como ejemplo veremos cómo calcular la desviación estándar de un conjunto de números.

Para empezar

Los arreglos son parte imprescindible para la realización de programas en cualquier lenguaje y para la resolución de casi todo tipo de problemas. Saber utilizarlos adecuadamente es necesario para aprender a programar. 

Para poder utilizar arreglos en lenguaje C, primero debes conocer otros temas del lenguaje como es la declaración de variables, el uso de ciclos for, e instrucciones de entrada y salida de datos.

Qué son los arreglos

Un arreglo es una colección de posiciones de almacenamiento de datos, donde cada una tiene el mismo tipo de dato y el mismo nombre. Cada posición de almacenamiento en un arreglo es llamada un elemento del arreglo. (Aitken & Jones, 1994).

Arreglos en C

Arreglos en C

Crear un arreglo

Para declarar o crear un arreglo utilizaremos la siguiente forma:

  • Escribe el tipo de dato que almacenará el arreglo
  • Escribe el nombre del arreglo
  • Entre corchetes, escribe la cantidad de elementos de ese tipo que se almacenarán

Por ejemplo, para crear un arreglo que almacene las calificaciones de un grupo de 10 estudiantes, podemos escribir:

//Crear un arreglo
float grupo[10];
int i;

Hemos declarado también una variable i, porque para manejar arreglos utilizaremos ciclos, y se necesita la variable i como contadora.

Crear arreglos en C

Crear arreglos en C

Asignar valores a una ubicación

Los arreglos nos sirven para almacenar datos. Si deseamos guardar datos en un arreglo podemos escribir la ubicación exacta donde deseamos almacenarlos.

Por ejemplo: para guardar un dato -en este caso, un cero- en las ubicaciones 0,1 y 2 del arreglo grupo, podemos escribir:

//Asignar valores directamente a cada ubicación
grupo[0] = 0;
grupo[1] = 0;
grupo[2] = 0;

Obsérvese que la primera ubicación de un arreglo es la celda 0.

Asignar un mismo valor a todo el arreglo

Por lo general es más práctico asignar valores al arreglo utilizando un ciclo for. Esto es útil si deseamos poner todo el arreglo en ceros o en algún otro valor inicial.

Por ejemplo: para asignar un cero a cada ubicación del arreglo, podemos escribir un ciclo que vaya desde la primera hasta la última posición del arreglo, y dentro del ciclo escribir una instrucción que asigne el valor al arreglo.

// Poner todas las ubicaciones en cero
for (i=0; i<=9; i++){
     grupo[i] = 0;
}

Aquí consideramos que el arreglo se llama grupo y que tiene capacidad para 10 elementos. Entonces el primer elemento está en la ubicación 0 y el último elemento en la ubicación 9. Cuando la instrucción dice grupo[i] , se toma como valor para i, 0,1,2,3,4,5,6,7,8,9.

Arreglo con valores en cero luego de ejecutar el ciclo

Arreglo con valores en cero luego de ejecutar el ciclo

Guardar en el arreglo los valores que el usuario introduce

Hasta ahora hemos explicado cómo asignar valores al arreglo. Ahora veamos cómo introducir valores que se hayan tecleado.

En el siguiente ejemplo se muestra el mensaje “Escriba el valor 0”. El usuario tecleará el valor y éste se guardará en la ubicación 0. Pasará lo mismo con las siguientes ubicaciones del arreglo.

//Leer datos y guardarlos en el arreglo
for(i=0; i<=9; i++){
	printf("\nEscriba el valor %d", i);
	scanf("%f", &grupo[i]);
}

Se utiliza %f  porque previamente el arreglo había sido declarado como float.

Mostrar todo el contenido de un arreglo

Vamos a mostrar el contenido de todo el arreglo, un valor en su propia línea. Para esto utilizaremos de nuevo un ciclo for, imprimiendo dos datos: la ubicación dentro del arreglo y el valor del dato.

for (i=0; i<10; i++){
  printf("En posicion %d el valor es %f\n", i, grupo[i]);
}

En éste ejemplo notará que utilizamos i<10. Esta expresión es equivalente a i<=9, por lo que podemos utilizar cualquiera de las dos.

Sumar todos los valores de un arreglo

Por lo general necesitaremos utilizar los valores del arreglo en operaciones. Por ejemplo, si deseamos el promedio de los valores de un arreglo, primero tendríamos que sumar todos los valores.

En el siguiente ejemplo se utiliza una variable llamada suma que se inicializa en 0 antes de ejecutar el ciclo y que se irá incrementando con los valores de cada posición del arreglo.

// Sumar todos los datos de un arreglo
float suma =0;
for(i=0; i<10; i++){
	suma+=grupo[i];
}
float media = suma / 10;
printf("La media es %.2f", media);

La instrucción suma+=grupo[i] implica que el valor presente de suma  se verá incrementado por el valor de grupo en la posición i, donde i toma valores desde 0 hasta 9.

Fuera del ciclo, se utiliza el valor de suma para calcular el promedio.

Obtener el valor máximo y mínimo de un arreglo

Podemos utilizar instrucciones condicionales utilizando los valores de un arreglo. Por ejemplo, para obtener el valor máximo del arreglo hacemos lo siguiente:

  • Guardamos el valor de la primera celda
  • Recorremos todo el arreglo utilizando un ciclo for
  • Comparamos -usando un if– si el valor de la posición actual del arreglo es mayor que el valor guardado. Si así fuese, guardamos el valor actual.
//Obtener el valor máximo de un arreglo	
float max=grupo[0];
for(i=0; i<10; i++){
	if (grupo[i] > max){
		max=grupo[i];
	}
}
printf("El valor máximo es %.2f", max);

Para obtener el valor más pequeño se sigue un procedimiento similar, sólo que en vez de comparar si es mayor, comparamos si es menor.

float min=grupo[0];
for(i=0; i<10; i++){
	if (grupo[i] < min){
		min=grupo[i];
	}
}
printf("El valor minimo es %.2f", min);

Ejemplo de uso de arreglos: Calcular la desviación estándar de un conjunto de números.

El cálculo de la desviación estándar es un ejemplo del uso de arreglos. Se necesita acceder a los datos 2 veces: la primera para obtener la media. La segunda para obtener la suma de los cuadrados de las diferencias.

La fórmula para calcular la desviación estándar de un conjunto de números es:

S=\sqrt{\frac{\sum\limits_{i=1}^n(Xi-\overline{X})^2}{n}}

En uno de los ejemplos anteriores hemos visto cómo calcular la media.

Teniendo ese dato listo, lo siguiente es crear un for que recorra los diez elementos del arreglo. Guardará la diferencia entre cada dato grupo[i]  y su media (media). Esa diferencia se eleva al cuadrado. Y en una variable acumuladora llamada total se van guardando esos cuadrados.

Después de cerrar ese ciclo, dividimos el total entre 10 (el número de elementos). Y a ese resultado se le calcula la raíz cuadrada.

El código que realiza esto es el siguiente:

// Ejemplo: obtener la desviación estándar
float diferencia, cuadrado, total, varianza, devest;

for (i=0; i<10; i++){
	diferencia = grupo[i]-media;
	cuadrado = diferencia * diferencia;
	total+=cuadrado;
}
varianza = total/10;
devest = sqrt(varianza);
printf("La desviacion estándar es: %.4f", devest);

Te dejo el código completo de todos los ejemplos anteriormente vistos ahora en un solo programa:

#include "stdio.h"
#include "stdlib.h"
#include "math.h"

int main(){
	
	//Crear un arreglo
	float grupo[10];
	int i;

	//Asignar valores directamente a cada ubicación
	grupo[0] = 0;
	grupo[1] = 0;
	grupo[2] = 0;


	// Poner todas las ubicaciones en cero
	for (i=0; i<10; i++){
		grupo[i] = 0;

	}
	
	//float personas[] = {70,80,100};

	// Mostrar el contenido de cada ubicación
	for (i=0; i<10; i++){
	  printf("En posicion %d el valor es %f\n", i, grupo[i]);
	}

	grupo[0] = 70;
	grupo[1] = 90;
	grupo[2] = 100;

	for (i=0; i<10; i++){
	  printf("En posicion %d el valor es %f\n", i, grupo[i]);
	}


	//Leer datos y guardarlos en el arreglo
	for(i=0; i<10; i++){
		printf("\nEscriba el valor %d", i);
		scanf("%f", &grupo[i]);

	}

	system("clear"); // reemplace clear por cls si usas windows

	for (i=0; i<10; i++){
	  printf("En posicion %d el valor es %f\n", i, grupo[i]);
	}

	// Sumar todos los datos de un arreglo
	float suma =0;
	for(i=0; i<10; i++){
		suma+=grupo[i];
	}
	float media = suma / 10;
	printf("La media es %.2f", media);

	//Obtener el valor máximo y mínimo de un arreglo	
	float max=grupo[0];
	for(i=0; i<10; i++){
		if (grupo[i] > max){
			max=grupo[i];
		}
	}
	printf("El valor máximo es %.2f", max);



	float min=grupo[0];
	for(i=0; i<10; i++){
		if (grupo[i] < min){
			min=grupo[i];
		}
	}
	printf("El valor minimo es %.2f", min);


	/*
	
	A cada numero se le resta la media
	El resultado se eleva al cuadrado
	Se suman todos los cuadrados
	Se dividen entre n
	Se saca la raiz cuadrada
	*/

	// Ejemplo: obtener la desviación estándar
	float diferencia, cuadrado, total, varianza, devest;

	for (i=0; i<10; i++){
		diferencia = grupo[i]-media;
		cuadrado = diferencia * diferencia;
		total+=cuadrado;
	}
	varianza = total/10;
	devest = sqrt(varianza);
	printf("La desviacion estándar es: %.4f", devest);


}

No dudes en dejar tus comentarios.

Referencias

  1. Aitken, P. G., & Jones, B. (1994). Aprendiendo C en 21 días. Prentice Hall Hispanoamericana.

Web recomendada

  1. StudyToNight.com

 

 

¿Qué te pareció este artículo?
  • Regular 
  • Poco informativo 
  • No era lo que buscaba 
  • Interesante 
  • Excelente 
(Visto 159.560 veces)
Facebooktwitterlinkedinmail

Tu comentario

opiniones

Comments

  • Jhon melendez | Mar 30,2020

    Wow en serio q me alegra haber encontrado esta página, en serio q explican bien y es facil de entender los procedimientos y eso es dificil de encontrar una pagina que sea entendible….gracias..