Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

AsignacióN DináMica

1,695 views

Published on

Published in: Sports, Business
  • Be the first to comment

  • Be the first to like this

AsignacióN DináMica

  1. 1. Asignación Dinámica<br />Ing. Paulo Guerra T.<br />26/Enero/2009<br />
  2. 2. Se asigna memoria dinámicamente mediante la función estándar malloc(), para trabajar con esa memoria como si fuera un array.<br />La función malloc () devuelve un puntero genérico al primer byte de una región de memoria del tamaño en bytes determinado en el argumento.<br />Arrays Asignados Dinámicamente <br />
  3. 3. Malloc(tamaño)<br />tamaño: indica el numero de bytes a reservar. <br />Si se desea reservar espacio de memoria para 10 elementos de tipo entero:<br />int *p;<br />p=(int *) malloc(10*sizeof(int));<br />Nota: la función sizeof( argumento) devuelve el numero de bytes que ocupa el argumento.<br />Declaración<br />
  4. 4. Ejemplo<br />#include &lt;stdio.h&gt;<br />#include &lt;stdlib.h&gt;<br />voidmain()<br />{<br />int *p,num;<br />printf(&quot;Ingrese el numero de elementos a crear: &quot;);<br />scanf(&quot;%d&quot;,&num);<br /> p=(int *)malloc(sizeof(int)*num);<br />for(int i=0;i&lt;num;i++)<br /> {<br />printf(&quot;Ingrese un dato: &quot;);<br />scanf(&quot;%d&quot;,(p+i)); <br /> }<br />for(i=0;i&lt;num;i++)<br /> {<br />printf(&quot; dato[%d]: %d&quot;,i,*(p+i)); <br /> }<br />}<br />recuerde que el puntero p apunta al primer elemento del arreglo y la variable i aumenta el desplazamiento a la siguiente posición de memoria<br />
  5. 5. #include &lt;stdio.h&gt;<br />#include &lt;stdlib.h&gt;<br />intleer(char texto[100], int min, intmax);<br />voidingresar_datos_arreglo(int *p, intnum);<br />voidimprimir_arreglo(int *p, intnum);<br />voidmain()<br />{<br />int *p,num;<br />num=leer(&quot;Ingrese el numero de elementos a crear: (0-20) &quot;, 0, 20);<br /> p=(int *)malloc(sizeof(int)*num);<br />ingresar_datos_arreglo(p,num);<br />imprimir_arreglo(p,num);<br />printf(&quot; Gracias... FIN DEL PROGRAMA&quot;);<br />}<br />int leer(char texto[100], int min, intmax)<br />{<br />int valor;<br /> do<br /> {<br />printf(&quot;%s&quot;, texto);<br />scanf(&quot;%d&quot;,&valor);<br /> }while(valor&lt;min ||valor&gt;max);<br />return valor;<br />}<br />voidingresar_datos_arreglo(int *p, intnum)<br />{<br />for(int i=0;i&lt;num;i++)<br /> {<br />printf(&quot;Ingrese un dato: &quot;);<br />scanf(&quot;%d&quot;,(p+i)); <br /> }<br />}<br />voidimprimir_arreglo(int *p, intnum)<br />{<br />for(int i=0;i&lt;num;i++)<br /> {<br />printf(&quot; dato[%d]: %d&quot;,i,*(p+i)); <br /> }<br />}<br />
  6. 6. int leer(char texto[100], int min, intmax);<br />voidingresar_datos_arreglo(int *p, intnum);<br />voidimprimir_arreglo(int *p, intnum);<br />voidmain()<br />{<br />int *p,num;<br />num=leer(&quot;Ingrese el numero de elementos a crear: (0-20) &quot;, 0, 20);<br />p=(int *)malloc(sizeof(int)*num);<br />ingresar_datos_arreglo(p,num);<br />imprimir_arreglo(p,num);<br />printf(&quot; Gracias... FIN DEL PROGRAMA&quot;);<br />}<br />int leer(char texto[100], int min, intmax)<br />{<br />int valor;<br />do{<br />printf(&quot;%s&quot;, texto);<br />scanf(&quot;%d&quot;,&valor);<br />}while(valor&lt;min ||valor&gt;max);<br />return valor;<br />}<br />voidingresar_datos_arreglo(int p[], intnum)<br />{<br />for(int i=0;i&lt;num;i++)<br /> {<br />printf(&quot;Ingrese un dato: &quot;);<br />scanf(&quot;%d&quot;,&p[i]); <br /> }<br />}<br />voidimprimir_arreglo(int *p, intnum)<br />{<br />for(int i=0;i&lt;num;i++)<br /> {<br />printf(&quot; dato[%d]: %d&quot;,i,p[i]); <br /> }<br />}<br />Observe que se puede pasar un puntero y recibirlo como un arreglo; esto se puede realizar por que un arreglo de la forma nombre[tamaño] es simplemente un puntero. <br />
  7. 7. Realizar un programa que permita ingresar n elementos de tipo floatdetermine el promedio.<br />A continuación el programa debe almacenar en un nuevo arreglo dinámico la desviación con respecto a la media.<br />d= Ai - Ā<br />Por ultimo el programa debe calcular la desviación estándar.<br />s= (d12 + d22 + d32 + ….+dn2 )/(n-1)<br />(Realizar el ejemplo con funciones y asignación dinámica).<br />Trabajo en clase<br />
  8. 8. Realizar un programa que permita ingresar una cedula y verifique si la cedula es válida o no.<br />1002856050 -&gt;Es válida<br />1000000001-&gt; Es inválida<br />Trabajo en clase<br />

×