



















































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Cómo declarar, inicializar, manipular y recorrer arrays y funciones en el lenguaje de programación c. Además, se detalla el uso de arrays bidimensionales o matrices, y las diferentes maneras de recorrarlos. El documento también incluye ejemplos prácticos.
Tipo: Ejercicios
1 / 59
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!




















































Vector , arreglo o array : Objeto que permite definir un almacenamiento (con un nombre común) en memoria principal de una colección de datos:
Ejemplo
Índice 0 1 2 3 4 5 6 NOTAS 7.5 2 6 9 2 4 6 NOTAS [ 3 ]=
Índice 0 1 2 3 4 5 6 TIRADAS 5 6 2 6 5 1 2 TIRADAS [ 6 ]=
El tipo indica al compilador cuantos bytes se necesitan para cada elemento y la dimensión cuantos elementos. Es típico definir la dimensión con #define dimensión N
Donde indice es una variable int o char (numérica)
1-Llamada a una función que tenga como parámetro un array: se escribe el nombre del array sin corchetes
2-Declaración como parámetro formal en la cabecera
(sin escribir un tamaño, aunque no sería incorrecto). 3- Los vectores no se pueden devolver en una función (return), por lo que si se desea que una función modifique un array en principio tendríamos que pasarlos como parámetro por referencia. Esto no es necesario ya que los vectores se pasan siempre por referencia (son en realidad punteros). Por tanto cualquier cambio que haga una función en un array pasado como parámetro será un cambio permanente. Un error típico del programador en C novato es confiar que un array pasado como parámetro actual a una función no se modificará. Tampoco es necesario utilizar el operador & delante del nombre del array. El nombre de un array equivale sintácticamente a la dirección del elemento cero (es decir array == &array[0]).
#include
/*Declaración alternativa: ‘ *void visualizar(int *)* ’ */
/prototipo: Declaración sin poner nombre del array/ void visualizar(int []);
int main() /* rellenamos y visualizamos */ { int array[25],i; for (i=0;i<25;i++) { printf("Elemento nº %d",i+1); scanf("%d",&array[i]); } visualizar(array); //o también: visualizar(&array[0]) }
/Declaración alternativa ‘ void visualizar(int * array) ’/
/*Implementación: obligatorio poner nombre al array */ void visualizar(int array[])
int i; for (i=0;i<25;i++) printf("%d",array[i]); }
Ó Lectura de los datos en un vector o array
void lee (int vector[]) { int i; for (i=0; i
Los arrays pueden tener 1 dimensión (los estudiados antes) o 2 (arrays bidimensionales o matrices), 3 o mas.
En una matriz:
Las matrices suelen utilizarse para relacionar dos magnitudes, como por ejemplo, la nota de un determinado alumno en una determinada asignatura.
El alumno 1 en la asignatura 2 tiene un 4 Boletin[2][1]=
Boletin[Nasig][Nalum]
1-Llamada a una función que tenga como parámetro una matriz: escribir nombre de matriz sin corchetes ni &
2-Declaración como parámetro formal en la cabecera de una función se escribe sin tamaño para las filas y a continuación [dimensión] para las columnas:
En general, si el argumento es una matriz n- dimensional es obligatorio especificar todas las dimensiones menos la primera
La razón es que una matriz se almacena realmente en memoria “por filas”.
Por ejemplo, en el caso bidimensional:
Puede verse así: El vector multidimensional es un vector de dimensión DIM1 en el que en cada posición hay a su vez un vector de dimensión DIM2, y asi sucesivamente:
Para que el compilador pueda indexar correctamene la matriz matriz[2][4], necesita conocer DIM2:
posición Nº: 2 *DIM2+ 4
int matriz[3][7] En memoria:
DIM DIM 4
m[i][j]=0; }
Ó Imprimir el contenido de una matriz
void imprimir (int m[][COLUMNAS]) { int i,j; for (i=0;i Ó Ejemplo de trabajo con matrices
#define FILAS 3 #define COLUMNAS 4
void inicializa(int m[][COLUMNAS]); void imprime (int m[][COLUMNAS]); void lee (int m[][COLUMNAS]); int main() { int m[FILAS][ COLUMNAS] ;
inicializa(m); lee(m); imprime (m); }
Por ejemplo:
int main(int argc, char * argsv[])
{ char cvar[5]={‘a’,’b’,’c’,’d’,’e’}; //Tamaño: 5 bytes char * pcvar;
int ivar[5]={1,2,3,4,5}; //Tamaño: 5x2== 10 bytes int * pivar,pivar2;
pcvar=&cvar; printf(“Letra %c,dirección %p”,pcvar,pcvar); //’a’,FF pcvar++; printf(“Letra %c,dirección %p”,pcvar,pcvar); //’b’,FF pcvar+=3; printf(“Letra %c,dirección %p”,*pcvar,pcvar); //’e’,FF
pivar=pivar2=&ivar; printf(“Numero %i,direccion %p”,pivar,pivar);// 1, FF pivar++; printf(“Numero %i,direccion %p”,pivar,pivar);// 2, FF pivar+=3; printf(“Numero %i,direccion %p”,*pivar,pivar);// 5, FF0F
printf(“El tamaño del array de caracteres es%i”,pivar-pivar2); }
FF00 FF
FF07 FF0F
intercambiables: se puede trabajar con los elementos de un array mediante operaciones de punteros y se pueden manipular punteros con el operador de indexación [] de arrays. En realidad el identificador de un vector es un puntero a su primer elemento.
int *pv; int vector[10]; //vector==&vector[0]
pv=vector; // o pv=&vector[0]
if (pv == vector) printf (“Esto siempre es cierto”);
Ó Desplazamiento sobre un array
Los elementos del array se almacenan en posiciones consecutivas de memoria, asi que para referirse a un elemento del array basta con desplazar el puntero a la posición deseada :
vector == &vector[0] == pv == &pv[0] (vector+1) == &vector[1] == (pv +1) == &pv[1] (vector+2) == &vector[2] == (pv+2) == &pv[2]
pv vector
Ó Modificación del contenido de una posición
Al tratarse de un puntero, al identificador de un vector se le puede aplicar el operador * para obtener el contenido de la dirección a la que apunta:
*vector == vector[0] == *pv == pv[0] *(vector+1) == vector[1] == *(pv+1) == pv[1] *(vector+1) == vector[2] == *(pv+2) == pv[2]
1º. Operador de Indexación []
#include #define DIM 10 int main() { int i, x=1, vector[DIM];
for (i=0; i