Professional Documents
Culture Documents
Arreglos (array)
El arreglo es un tipo estructurado de dato, el cual
es capaz de almacenar una coleccin de datos del
mismo tipo.
Es la estructura de datos ms utilizada por los
programadores
Es la forma ms simple de agrupar componentes
de un mismo tipo y asociarles un nmero de
orden de cada componente llamado ndice.
Los arreglos en C, se almacenan en posiciones
contiguas de memoria
Posee un tamao
Dimensionalidad
El arreglo es una estructura multidimensional
En una dimensin puede ser visto como un vector,
necesita de un ndice (la posicin) para recorrer
sus elementos
Un arreglo de dos dimensiones puede
representarse como una matriz, necesita de dos
ndices (fila y columna) para acceder a uno de sus
elementos
Dimensionalidad
Un arreglo de 3 dimensiones podemos
tomarlo como un espacio. Ejemplo: el cubo
de rubik
Contiene 4*4*4 cubos, para acceder a uno de ellos necesito
altura, posicin horizontal, y profundidad (3 ndices)
Ejemplos
Unidimensional
int a[20];
Tridimensional
float a[7][7][4];
Bidimensional
Int a[6][7];
Ejemplos
int numeros[]={1,3,34,54}; //su tamao es 4
char alfabeto[5]={A,B,C,D,E};
//arreglo de caracteres de tamao 5
Char nombres[][40]={pedro, pablo, luis,
karina, lisa};
//5 filas y columnas a lo mas de 40 caracteres.
int Coordenadas[2][2]={ {0,0},{1,1}};
//arreglo bidimensional de enteros
Observaciones
Los ndices de los arreglos comienzan en cero,
es decir, el primer elemento, es el elemento
cero.
Si un arreglo es declarado en la funcin
principal main() tendra las dimensiones
incluidas.
Cuando se pasa un arreglo a una funcin, esta
ultima no necesita saber el tamao.
Arreglos Unidimensionales
Es una lista o vector.
Declaracin
Tipo_dato nom_arreglo[tamao];
Tipo_dato: de que tipo sern los elementos.
Recordar que todo son del mismo tipo
Nom_arreglo: nombre para la variable tipo
arreglos
[]: nos indica que su dimensionalidad es uno
Tamao: la cantidad de elementos que a los
ms podr contener el arreglo.
Accesando a elementos
Un elemento individual dentro de un arreglo es
accedido por el uso de un ndice.
Un ndice describe la posicin de un elemento
dentro de un arreglo.
En C/C++ el primer elemento tiene el ndice cero!
int V[5];
V
13
Posicin 0
34
1
7
2
61
3
V[2] contiene el 7
1
4
V[4] contiene el 1
V[0] contiene el 13
Ejemplo
#include <stdio.h>
int main(){
int muestra[10],t;
for(t=0;t<10;t++)
muestra[t]=t*t;
for(t=0;t<10;t++)
printf(muestra[%d]=%d,t,muestra[t]);
return 0;
}
Mapeo de un Arreglo en
Memoria
En C, un arreglo es mapeado a
localizaciones de memoria continua
Todos los elementos de memoria residen
uno al lado del otro
La direccin ms baja corresponde al
primer elemento, y la ms alta al ltimo
elemento
La cantidad de bytes del arreglo de tamao
n est dada por sizeof(tipo_dato)*n
Asignando arreglos
No se puede asignar un arreglo a otro
Lo siguiente es ilegal:
int a[10], b[10];
//hacer algo
a=b;//error ilegal
En vez, se debe hacer asignaciones por cada
elemento:
int i;
for(i=0;i<10;i++)a[i]=b[i];
Ejemplos
1.- Realizar un programa en el que se ingresen 10
enteros, y luego muestre la suma de ellos y su
promedio
2.- Encontrar el mximo de una lista de 10 elementos
Ejemplo 1.
#include<stdio.h>
int main(){
int i, max=0;
int list[100];
for(i=0;i<100;i++)
list[i]=rand();
for(i=0;i<100;i++)
if(max<list[i])
max=list[i];
printf(max=%d,max);
return 0;
}
Ejemplo 2
#include <stdio.h>
int main(){
int x[10];
int i,suma;
printf ("\n Ingrese 10 nmeros:\n");
for (i=0;i<10;i++)
scanf("%d",&x[i]);//lleva & pq es componente a
componente
suma=0;
for (i=0;i<10;i++)
suma+=x[i];
printf("\n El resultado de la suma es = %d ",suma);
printf("\n El resultado del promedio es = %d ",suma/10);
return 0;
}
10
printf("calloc\n");
k = (int *)calloc(num,sizeof(int));
for(i=0;i<num;i++)
k[i]=rand()%13;
for(i=0;i<num;i++)
printf(" k[%d]=%d\n",i,k[i]);
k = (int *)realloc(k,sizeof(int)*num*2);
for(i=0;i<num*2;i++)
k[i]=rand()%13;
for(i=0;i<num*2;i++)
printf(" k[%d]=%d\n",i,k[i]);
free(k);
Return 0;
}
11
String
El uso ms comn para un arreglo
unidimensional es guardar un arreglo de
caracteres
Un string esta definido como un arreglo de
caracteres terminado por un smbolo null (\0)
h
\0
12
Asignacin de String
Para asignar un carcter a un char se utiliza
la comilla simple
13
Descripcin
Sean s1 y s2 string de largo fijo:
Strcpy(s1,s2) copia s2 en s1 y devuelve s1
Strcat(s1,s2) concatena s2 en s1, retorna s1
Strlen(s1) devuelve el la longitud de s1
Strcmp(s1,s2) compara s1 con s2
si son iguales devuelve 0
si s1>s2
devuelve un n >0
si s1<s2
devuelve un n <0
14
#include <stdio.h>
#include <stdlib.h>
int main() {
char s[10],c[10]={"iwi131"};
do {
printf("ingrese su clave ");
scanf("%s",s);
if (strcmp(s,c)!=0)
printf("clave incorrecta, intente de nuevo\n");
}while(strcmp(s,c)!=0);
printf("la clave es correcta\n");
return 0;
}
#include <string.h>
#include <stdio.h>
int main(void){
char c1[80],c2[80];
printf("\n Ingrese una cadena de caracteres:");
scanf("%s",c1);
printf("\n Ingrese una cadena de caracteres:");
scanf("%s",c2);
printf("\n Longitudes: %d %d ",strlen(c1),strlen(c2));
if(!strcmp(c1,c2)) printf("\nLas cadenas son iguales");
strcat(c1,c2);
printf("\n %s",c1);
return 0;
}
15
String.h
strcat
strchr
strcmp
strcmpi
strcpy
strlwr
strncat
strncmp
strncpy
strnset
strrchr
strrev
strset
strspn
strupr
Appends a string
Finds first occurrence of a given character
Compares two strings
Compares two strings, non-case sensitive
Copies one string to another strlen Finds length of a string
Converts a string to lowercase
Appends n characters of string
Compares n characters of two strings
Copies n characters of one string to another
Sets n characters of string to a given character
Finds last occurrence of given character in string
Reverses string
Sets all characters of string to a given character
Finds first substring from given character set in string
Converts string to uppercase
String
Ejercicio:
4.- Realizar un programa que convierta un string a
mayscula y contar nmero de dgitos.
16
Arreglos de 2 dimensiones
Arreglo 2-dimensional
Un arreglo bidimensional es una lista de arreglos
unidimensional
Para declarar un arreglo bidimensional de enteros
int matriz[3][4];
17
#include<stdio.h>
int main(){
int fila=3,col=4,matriz[fila][col];
for(fila=0;fila<3;fila++)
for(col=0;col<4;col++)
matriz[fila][col]=fila*col;
return 0;
}
Arreglos Multidimensionales
C permite arreglos con mas de dos
dimensiones
La forma general de una declaracin de arreglo
es
tipo nombre_var[ tamao1] [ tamao2] [
tamaoN]
18