{"id":1805,"date":"2019-04-16T17:36:01","date_gmt":"2019-04-16T22:36:01","guid":{"rendered":"https:\/\/naps.com.mx\/blog\/?p=1805"},"modified":"2021-11-28T13:41:15","modified_gmt":"2021-11-28T19:41:15","slug":"ejemplos-explicados-de-arreglos-en-c","status":"publish","type":"post","link":"https:\/\/naps.com.mx\/blog\/ejemplos-explicados-de-arreglos-en-c\/","title":{"rendered":"Ejemplos explicados de arreglos en lenguaje C"},"content":{"rendered":"<p>En \u00e9ste art\u00edculo veremos: c\u00f3mo crear arreglos, c\u00f3mo asignar valores a un arreglo, c\u00f3mo mostrar el contenido de un arreglo, c\u00f3mo sumar todos los datos de un arreglo, c\u00f3mo obtener los valores m\u00e1ximo y m\u00ednimo pertenecientes a un arreglo, y como ejemplo veremos c\u00f3mo calcular la desviaci\u00f3n est\u00e1ndar de un conjunto de n\u00fameros.<\/p>\n<p><!--more--><\/p>\n<h2>Para empezar<\/h2>\n<p>Los arreglos son parte imprescindible para la realizaci\u00f3n de programas en cualquier lenguaje y para la resoluci\u00f3n de casi todo tipo de problemas. <strong>Saber utilizarlos adecuadamente es necesario para aprender a programar<\/strong>.<span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\n<p>Para poder utilizar arreglos en lenguaje C, primero debes conocer otros temas del lenguaje como es la declaraci\u00f3n de variables, el uso de <a href=\"https:\/\/naps.com.mx\/blog\/ejemplos-explicados-de-ciclos-en-c\/\"><strong>ciclos for<\/strong><\/a>, e <a href=\"https:\/\/naps.com.mx\/blog\/fudamentos-de-programacion-entrada-y-salida-de-datos\/\"><strong>instrucciones de entrada y salida de datos<\/strong><\/a>.<\/p>\n<h2>Qu\u00e9 son los arreglos<\/h2>\n<p>Un <strong>arreglo<\/strong> es una colecci\u00f3n de posiciones de almacenamiento de datos, donde cada una tiene el mismo tipo de dato y el mismo nombre. Cada posici\u00f3n de almacenamiento en un arreglo es llamada un <strong>elemento del arreglo<\/strong>. (Aitken &amp; Jones, 1994).<\/p>\n<div id=\"attachment_1822\" style=\"width: 1240px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2019\/04\/Arreglos-en-C.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1822\" class=\"size-full wp-image-1822\" src=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2019\/04\/Arreglos-en-C.png\" alt=\"Arreglos en C\" width=\"1230\" height=\"198\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2019\/04\/Arreglos-en-C.png 1230w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2019\/04\/Arreglos-en-C-300x48.png 300w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2019\/04\/Arreglos-en-C-768x124.png 768w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2019\/04\/Arreglos-en-C-1024x165.png 1024w\" sizes=\"auto, (max-width: 1230px) 100vw, 1230px\" \/><\/a><p id=\"caption-attachment-1822\" class=\"wp-caption-text\">Arreglos en C<\/p><\/div>\n<h2>Crear un arreglo<\/h2>\n<p>Para declarar o crear un arreglo utilizaremos la siguiente forma:<\/p>\n<ul>\n<li>Escribe el tipo de dato que almacenar\u00e1 el arreglo<\/li>\n<li>Escribe el nombre del arreglo<\/li>\n<li>Entre corchetes, escribe la cantidad de elementos de ese tipo que se almacenar\u00e1n<\/li>\n<\/ul>\n<p>Por ejemplo, para crear un arreglo que almacene las calificaciones de un grupo de 10 estudiantes, podemos escribir:<\/p>\n<pre class=\"lang:c decode:true \">\/\/Crear un arreglo\r\nfloat grupo[10];\r\nint i;<\/pre>\n<p>Hemos declarado tambi\u00e9n una variable <em>i<\/em>, porque para manejar arreglos utilizaremos ciclos, y se necesita la variable<em> i<\/em> como contadora.<\/p>\n<div id=\"attachment_1821\" style=\"width: 492px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2019\/04\/Crear-arreglos-en-C.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1821\" class=\"size-full wp-image-1821\" src=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2019\/04\/Crear-arreglos-en-C.png\" alt=\"Crear arreglos en C\" width=\"482\" height=\"322\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2019\/04\/Crear-arreglos-en-C.png 482w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2019\/04\/Crear-arreglos-en-C-300x200.png 300w\" sizes=\"auto, (max-width: 482px) 100vw, 482px\" \/><\/a><p id=\"caption-attachment-1821\" class=\"wp-caption-text\">Crear arreglos en C<\/p><\/div>\n<h2>Asignar valores a una ubicaci\u00f3n<\/h2>\n<p>Los arreglos nos sirven para almacenar datos. Si deseamos guardar datos en un arreglo podemos escribir la ubicaci\u00f3n exacta donde deseamos almacenarlos.<\/p>\n<p>Por ejemplo: para guardar un dato -en este caso, un cero- en las ubicaciones 0,1 y 2 del arreglo\u00a0<em>grupo<\/em>, podemos escribir:<\/p>\n<pre class=\"lang:c decode:true \">\/\/Asignar valores directamente a cada ubicaci\u00f3n\r\ngrupo[0] = 0;\r\ngrupo[1] = 0;\r\ngrupo[2] = 0;\r\n<\/pre>\n<p>Obs\u00e9rvese que la primera ubicaci\u00f3n de un arreglo es la celda 0.<\/p>\n<h2>Asignar un mismo valor a todo el arreglo<\/h2>\n<p>Por lo general es m\u00e1s pr\u00e1ctico asignar valores al arreglo utilizando un ciclo for. Esto es \u00fatil si deseamos poner todo el arreglo en ceros o en alg\u00fan otro valor inicial.<\/p>\n<p>Por ejemplo: para asignar un cero a cada ubicaci\u00f3n del arreglo, podemos escribir un ciclo que vaya desde la primera hasta la \u00faltima posici\u00f3n del arreglo, y dentro del ciclo escribir una instrucci\u00f3n que asigne el valor al arreglo.<\/p>\n<pre class=\"lang:c decode:true\">\/\/ Poner todas las ubicaciones en cero\r\nfor (i=0; i&lt;=9; i++){\r\n     grupo[i] = 0;\r\n}<\/pre>\n<p>Aqu\u00ed consideramos que el arreglo se llama\u00a0<em>grupo<\/em> y que tiene capacidad para 10 elementos. Entonces el primer elemento est\u00e1 en la ubicaci\u00f3n 0 y el \u00faltimo elemento en la ubicaci\u00f3n 9. Cuando la instrucci\u00f3n dice\u00a0<em>grupo[i]\u00a0<\/em>, se toma como valor para\u00a0<em>i<\/em>, 0,1,2,3,4,5,6,7,8,9.<\/p>\n<div id=\"attachment_1827\" style=\"width: 1240px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2019\/04\/Arreglo-lleno.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1827\" class=\"size-full wp-image-1827\" src=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2019\/04\/Arreglo-lleno.png\" alt=\"Arreglo con valores en cero luego de ejecutar el ciclo\" width=\"1230\" height=\"198\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2019\/04\/Arreglo-lleno.png 1230w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2019\/04\/Arreglo-lleno-300x48.png 300w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2019\/04\/Arreglo-lleno-768x124.png 768w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2019\/04\/Arreglo-lleno-1024x165.png 1024w\" sizes=\"auto, (max-width: 1230px) 100vw, 1230px\" \/><\/a><p id=\"caption-attachment-1827\" class=\"wp-caption-text\">Arreglo con valores en cero luego de ejecutar el ciclo<\/p><\/div>\n<h2>Guardar en el arreglo los valores que el usuario introduce<\/h2>\n<p>Hasta ahora hemos explicado c\u00f3mo asignar valores al arreglo. Ahora veamos c\u00f3mo introducir valores que se hayan tecleado.<\/p>\n<p>En el siguiente ejemplo se muestra el mensaje \u00abEscriba el valor 0\u00bb. El usuario teclear\u00e1 el valor y \u00e9ste se guardar\u00e1 en la ubicaci\u00f3n 0. Pasar\u00e1 lo mismo con las siguientes ubicaciones del arreglo.<\/p>\n<pre class=\"lang:c decode:true\">\/\/Leer datos y guardarlos en el arreglo\r\nfor(i=0; i&lt;=9; i++){\r\n\tprintf(\"\\nEscriba el valor %d\", i);\r\n\tscanf(\"%f\", &amp;grupo[i]);\r\n}<\/pre>\n<p>Se utiliza\u00a0<em>%f<\/em> \u00a0porque previamente el arreglo hab\u00eda sido declarado como\u00a0<em>float<\/em>.<\/p>\n<h2>Mostrar todo el contenido de un arreglo<\/h2>\n<p>Vamos a mostrar el contenido de todo el arreglo, un valor en su propia l\u00ednea. Para esto utilizaremos de nuevo un ciclo for, imprimiendo dos datos: la ubicaci\u00f3n dentro del arreglo y el valor del dato.<\/p>\n<pre class=\"lang:c decode:true \">for (i=0; i&lt;10; i++){\r\n  printf(\"En posicion %d el valor es %f\\n\", i, grupo[i]);\r\n}\r\n<\/pre>\n<p>En \u00e9ste ejemplo notar\u00e1 que utilizamos\u00a0<em>i&lt;10<\/em>. Esta expresi\u00f3n es equivalente a\u00a0<em>i&lt;=9, <\/em>por lo que\u00a0podemos utilizar cualquiera de las dos.<\/p>\n<h2>Sumar todos los valores de un arreglo<\/h2>\n<p>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\u00edamos que sumar todos los valores.<\/p>\n<p>En el siguiente ejemplo se utiliza una variable llamada\u00a0<em>suma<\/em> que se inicializa en 0 antes de ejecutar el ciclo y que se ir\u00e1 incrementando con los valores de cada posici\u00f3n del arreglo.<\/p>\n<pre class=\"lang:c decode:true \">\/\/ Sumar todos los datos de un arreglo\r\nfloat suma =0;\r\nfor(i=0; i&lt;10; i++){\r\n\tsuma+=grupo[i];\r\n}\r\nfloat media = suma \/ 10;\r\nprintf(\"La media es %.2f\", media);<\/pre>\n<p>La instrucci\u00f3n\u00a0<em>suma+=grupo[i]<\/em> implica que el valor presente de\u00a0<em>suma\u00a0<\/em> se ver\u00e1 incrementado por el valor de\u00a0<em>grupo<\/em> en la posici\u00f3n<em>\u00a0<\/em><em>i<\/em>, donde i toma valores desde 0 hasta 9.<\/p>\n<p>Fuera del ciclo, se utiliza el valor de\u00a0<em>suma<\/em> para calcular el promedio.<\/p>\n<h2>Obtener el valor m\u00e1ximo y m\u00ednimo de un arreglo<\/h2>\n<p>Podemos utilizar instrucciones condicionales utilizando los valores de un arreglo. Por ejemplo, para obtener el valor m\u00e1ximo del arreglo hacemos lo siguiente:<\/p>\n<ul>\n<li>Guardamos el valor de la primera celda<\/li>\n<li>Recorremos todo el arreglo utilizando un ciclo for<\/li>\n<li>Comparamos -usando un\u00a0<em>if<\/em>&#8211; si el valor de la posici\u00f3n actual del arreglo es mayor que el valor guardado. Si as\u00ed fuese, guardamos el valor actual.<\/li>\n<\/ul>\n<pre class=\"lang:c decode:true\">\/\/Obtener el valor m\u00e1ximo de un arreglo\t\r\nfloat max=grupo[0];\r\nfor(i=0; i&lt;10; i++){\r\n\tif (grupo[i] &gt; max){\r\n\t\tmax=grupo[i];\r\n\t}\r\n}\r\nprintf(\"El valor m\u00e1ximo es %.2f\", max);<\/pre>\n<p>Para obtener el valor m\u00e1s peque\u00f1o se sigue un procedimiento similar, s\u00f3lo que en vez de comparar si es mayor, comparamos si es menor.<\/p>\n<pre class=\"lang:c decode:true \">float min=grupo[0];\r\nfor(i=0; i&lt;10; i++){\r\n\tif (grupo[i] &lt; min){\r\n\t\tmin=grupo[i];\r\n\t}\r\n}\r\nprintf(\"El valor minimo es %.2f\", min);<\/pre>\n<h2>Ejemplo de uso de arreglos: Calcular la desviaci\u00f3n est\u00e1ndar de un conjunto de n\u00fameros.<\/h2>\n<p>El c\u00e1lculo de la desviaci\u00f3n est\u00e1ndar 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.<\/p>\n<p>La f\u00f3rmula para calcular la desviaci\u00f3n est\u00e1ndar de un conjunto de n\u00fameros es:<\/p>\n<span class=\"wp-katex-eq\" data-display=\"false\">S=\\sqrt{\\frac{\\sum\\limits_{i=1}^n(Xi-\\overline{X})^2}{n}}<\/span>\n<p>En uno de los ejemplos anteriores hemos visto c\u00f3mo calcular la media.<\/p>\n<p>Teniendo ese dato listo, lo siguiente es crear un\u00a0<em>for<\/em> que recorra los diez elementos del arreglo. Guardar\u00e1 la diferencia entre cada dato\u00a0<em>grupo[i]\u00a0<\/em> y su media (<em>media<\/em>). Esa diferencia se eleva al cuadrado. Y en una variable acumuladora llamada\u00a0<em>total<\/em> se van guardando esos cuadrados.<\/p>\n<p>Despu\u00e9s de cerrar ese ciclo, dividimos el total entre 10 (el n\u00famero de elementos). Y a ese resultado se le calcula la ra\u00edz cuadrada.<\/p>\n<p>El c\u00f3digo que realiza esto es el siguiente:<\/p>\n<pre class=\"lang:c decode:true \">\/\/ Ejemplo: obtener la desviaci\u00f3n est\u00e1ndar\r\nfloat diferencia, cuadrado, total, varianza, devest;\r\n\r\nfor (i=0; i&lt;10; i++){\r\n\tdiferencia = grupo[i]-media;\r\n\tcuadrado = diferencia * diferencia;\r\n\ttotal+=cuadrado;\r\n}\r\nvarianza = total\/10;\r\ndevest = sqrt(varianza);\r\nprintf(\"La desviacion est\u00e1ndar es: %.4f\", devest);<\/pre>\n<p>Te dejo el c\u00f3digo completo de todos los ejemplos anteriormente vistos ahora en un solo programa:<\/p>\n<pre class=\"lang:c decode:true  \">#include \"stdio.h\"\r\n#include \"stdlib.h\"\r\n#include \"math.h\"\r\n\r\nint main(){\r\n\t\r\n\t\/\/Crear un arreglo\r\n\tfloat grupo[10];\r\n\tint i;\r\n\r\n\t\/\/Asignar valores directamente a cada ubicaci\u00f3n\r\n\tgrupo[0] = 0;\r\n\tgrupo[1] = 0;\r\n\tgrupo[2] = 0;\r\n\r\n\r\n\t\/\/ Poner todas las ubicaciones en cero\r\n\tfor (i=0; i&lt;10; i++){\r\n\t\tgrupo[i] = 0;\r\n\r\n\t}\r\n\t\r\n\t\/\/float personas[] = {70,80,100};\r\n\r\n\t\/\/ Mostrar el contenido de cada ubicaci\u00f3n\r\n\tfor (i=0; i&lt;10; i++){\r\n\t  printf(\"En posicion %d el valor es %f\\n\", i, grupo[i]);\r\n\t}\r\n\r\n\tgrupo[0] = 70;\r\n\tgrupo[1] = 90;\r\n\tgrupo[2] = 100;\r\n\r\n\tfor (i=0; i&lt;10; i++){\r\n\t  printf(\"En posicion %d el valor es %f\\n\", i, grupo[i]);\r\n\t}\r\n\r\n\r\n\t\/\/Leer datos y guardarlos en el arreglo\r\n\tfor(i=0; i&lt;10; i++){\r\n\t\tprintf(\"\\nEscriba el valor %d\", i);\r\n\t\tscanf(\"%f\", &amp;grupo[i]);\r\n\r\n\t}\r\n\r\n\tsystem(\"clear\"); \/\/ reemplace clear por cls si usas windows\r\n\r\n\tfor (i=0; i&lt;10; i++){\r\n\t  printf(\"En posicion %d el valor es %f\\n\", i, grupo[i]);\r\n\t}\r\n\r\n\t\/\/ Sumar todos los datos de un arreglo\r\n\tfloat suma =0;\r\n\tfor(i=0; i&lt;10; i++){\r\n\t\tsuma+=grupo[i];\r\n\t}\r\n\tfloat media = suma \/ 10;\r\n\tprintf(\"La media es %.2f\", media);\r\n\r\n\t\/\/Obtener el valor m\u00e1ximo y m\u00ednimo de un arreglo\t\r\n\tfloat max=grupo[0];\r\n\tfor(i=0; i&lt;10; i++){\r\n\t\tif (grupo[i] &gt; max){\r\n\t\t\tmax=grupo[i];\r\n\t\t}\r\n\t}\r\n\tprintf(\"El valor m\u00e1ximo es %.2f\", max);\r\n\r\n\r\n\r\n\tfloat min=grupo[0];\r\n\tfor(i=0; i&lt;10; i++){\r\n\t\tif (grupo[i] &lt; min){\r\n\t\t\tmin=grupo[i];\r\n\t\t}\r\n\t}\r\n\tprintf(\"El valor minimo es %.2f\", min);\r\n\r\n\r\n\t\/*\r\n\t\r\n\tA cada numero se le resta la media\r\n\tEl resultado se eleva al cuadrado\r\n\tSe suman todos los cuadrados\r\n\tSe dividen entre n\r\n\tSe saca la raiz cuadrada\r\n\t*\/\r\n\r\n\t\/\/ Ejemplo: obtener la desviaci\u00f3n est\u00e1ndar\r\n\tfloat diferencia, cuadrado, total, varianza, devest;\r\n\r\n\tfor (i=0; i&lt;10; i++){\r\n\t\tdiferencia = grupo[i]-media;\r\n\t\tcuadrado = diferencia * diferencia;\r\n\t\ttotal+=cuadrado;\r\n\t}\r\n\tvarianza = total\/10;\r\n\tdevest = sqrt(varianza);\r\n\tprintf(\"La desviacion est\u00e1ndar es: %.4f\", devest);\r\n\r\n\r\n}<\/pre>\n<p>No dudes en dejar tus comentarios.<\/p>\n<h2>Referencias<\/h2>\n<ol>\n<li>Aitken, P. G., &amp; Jones, B. (1994). Aprendiendo C en 21 d\u00edas. Prentice Hall Hispanoamericana.<\/li>\n<\/ol>\n<h2>Web recomendada<\/h2>\n<ol>\n<li><a href=\"https:\/\/www.studytonight.com\/c\/\">StudyToNight.com<\/a><\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En \u00e9ste art\u00edculo veremos: c\u00f3mo crear arreglos, c\u00f3mo asignar valores a un arreglo, c\u00f3mo mostrar el contenido de un arreglo, c\u00f3mo sumar todos los datos de un arreglo, c\u00f3mo obtener los valores m\u00e1ximo y m\u00ednimo pertenecientes a un arreglo, y como ejemplo veremos c\u00f3mo calcular la desviaci\u00f3n est\u00e1ndar de un conjunto de n\u00fameros.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"amp_status":"enabled","footnotes":""},"categories":[52,188],"tags":[178,254,189],"class_list":["post-1805","post","type-post","status-publish","format-standard","hentry","category-estadistica","category-programacion-basica","tag-aprender-a-programar","tag-arreglos","tag-programacion-basica"],"_links":{"self":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/1805","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/comments?post=1805"}],"version-history":[{"count":20,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/1805\/revisions"}],"predecessor-version":[{"id":1975,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/1805\/revisions\/1975"}],"wp:attachment":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/media?parent=1805"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/categories?post=1805"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/tags?post=1805"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}