Anda di halaman 1dari 18

Pontificia Universidad Catlica Madre y Maestra Vicerrectora Acadmica Facultad Ciencias de las Ingenieras Ingeniera en Sistemas y Computacin - ISC

Introduccin a la Algoritmia
Leccin 5 Manipulacin de Arreglos y Matrices

16-ene-13 Santiago, Rep. Dom.

Manipulacin de Arreglos y Matrices


Arreglos

Definicin
Secuencia de datos del mismo tipo. A los datos se les llama elementos y se enumeran consecutivamente: 0, 1, 2, 3, 4, ..., n. A estos nmeros se les llama subndice o valores de ndices.

Declaracin
tipo nombre_arreglo[numero_elementos];

Ej.: int numero[10]; arreglo numero de 10 elementos. numero[0] es el primer elemento. numero[9] es el ltimo elemento.

Manipulacin de Arreglos y Matrices


Arreglos

Almacenamiento en memoria.
Se almacenan en bloques contiguos.

Tamao del arreglo.


Usando la funcin sizeof, podemos obtener los bytes reservados para el arreglo completo. Ej. int edades[100]; n= sizeof(edades); n=400, un entero=4bytes n= sizeof(edades[2]); n = 4; un solo elemento

Manipulacin de Arreglos y Matrices


Arreglos

Rango de ndice de un arreglo


El lenguaje C no verifica el valor del ndice de la variable que representa al arreglo.

Inicializacin de un arreglo
Antes de usar un arreglo se debe inicializar. Ej. int numeros[6] = {10,20,30,40,50,60}; int n[]={3,4,5}; /* arreglo de 3 elementos */ char c[]={L,u,i,s}; /* arreglo de 4 elementos */ Los arreglos de caracteres y de cadenas en C, deben finalizar con el carcter nulo \0

Manipulacin de Arreglos y Matrices


Arreglos
Lo habitual es inicializar un arreglo de carcter con una constante cadena. Ej. char s[] =Puesta del Sol; Se pueden asignar constantes simblicas como valores numricos, como sigue: #define ENE 31 #define FEB 28 #define MAR 31 int meses[12]={ENE,FEB,MAR,...,NOV,DIC}; Para inicializar los arreglos se suelen utilizar bucles: for, while, do-while. Generalmente se inicializan en cero(0)

Manipulacin de Arreglos y Matrices


Cadenas de Caracteres
Conjunto de Caracteres. Es un dato compuesto de: un arreglo de caracteres (char), terminado el carcter \0 Por ej. char cadena[]=ABCD, contiene al final el carcter nulo \0, osea, que se agrega una celda ms. El compilador agrega al final el carcter \0 A B C D \0

Cadena[0]= A Cadena[1]= B Cadena[2]= C Cadena[3]= D Cadena[4]= \0 El lenguaje C manipula cadenas a travs de arreglo de caracteres que terminan con el carcter nulo. \0.

Manipulacin de Arreglos y Matrices


Cadenas de Caracteres

Declaracin
Igual que los arreglos, se usa el operador posfijo [], El tipo de dato base es el char. char texto[81] /*una linea */ char datos[40]

Inicializacin
char cadena[81]=Esto es una cadena; No podemos inicializar una cadena fuera de la declaracin, como sigue: cadena=ALGO; ms adelante veremos la forma correcta.

Manipulacin de Arreglos y Matrices


Cadenas de Caracteres - Lectura
Se usa la funcin scanf() y el formato es %s. Esta funcin termina de leer cuando encuentra un espacio en blanco fin de lnea( osea una palabra).
#include <stdio.h> void main() { char s[20]; printf("\n Digite un texto"); scanf(%s,s); printf( %s \n,s); }

Manipulacin de Arreglos y Matrices


Cadenas de Caracteres - Funciones
gets() : leer dos o ms palabras en una cadena, lee la cadena hasta fin de lnea. gets(cadena).
puts() : escribir en la salida una cadena y el fin de lnea. Por lo que sita el puntero de salida en la siguiente lnea. puts(cadena). Salta una lnea. getchar(): leer carcter a carcter, devuelve el carcter de entrada, a travs del stdin(teclado) . En caso de error o fin de archivo(control-z) devuelve el valor EOF. putchar(): escribir carcter a carcter, stdout(monitor) . envia el carcter a la salida o

Manipulacin de Arreglos y Matrices


Cadenas de Caracteres - Funciones
Aqu se lleva a mayscula la 1era. letra de cada palabra de la cadena leda.
#include <stdio.h> #include <ctype.h> /* para usar toupper(carcter) */ int main(){ char car, pre = '#'; printf("\n Digite un texto \n"); while ((car=getchar()) != EOF){ if (pre==' ' || pre =='#') putchar(toupper(car)); else putchar(car); pre=car; } return 0; }

Manipulacin de Arreglos y Matrices


Cadenas de Caracteres - Funciones
strlen(cadena) : devuelve la longitud de la cadena sin incluir el carcter nulo.
strcat(cadenadestino,cadenaorigen) : agrega la cadena origen a la cadena destino. strncat(c1,c2,n) agrega los primeros n caracteres de c2 a c1. strcmp(cadena1,cadena2) : devuelve : 0 <0 >0 compara la cadena1 con la cadena2 y si cadena1 == cadena2 si cadena1 < cadena2 si cadena1 > cadena2

strcpy(cadenadestino,cadenaorigen) : copia la cadena origen a la cadena destino. strncpy(c1,c2,n)

Manipulacin de Arreglos y Matrices


Arreglo Multidimensionales
Son arreglos con ms de una dimensin y por lo tanto ms de un ndice.

O 1
O 1

2 3

4 (n)

Declaracin <tipo de datos><NombreArreglo> [#fila][#columnas] Ej. char pantalla [25][80]; int puestos [6][8];

2 3 (m)

Manipulacin de Arreglos y Matrices


Arreglo Multidimensionales
Representacin en memoria Ej. int m[4][2];
m[0][0] m[0][1] m[1][0] m[1][1] m[2][0] m[2][1] m[3][0] m[3][1]

Inicializacin Se pueden inicializar cuando se declaran. Ej. int matriz[2][3]={1,3,5,7,9,11}; int matriz[2][3]={{1,3,5},{7,9,11}};

Manipulacin de Arreglos y Matrices


Arreglo Multidimensionales
Asignacin directa de valores.
Modificando la tabla <NombreArreglo> [Indicefila][Indicecolumna]=valor; Asignar la tabla a una variable Variable=<NombreArreglo>[fila][columna]; Ej. tabla[2][3]=10; ventas = tabla[2][2]; Lectura y Escritura de una tabla scanf(%d, &tabla[2][2]); printf(%4d, tabla[2][2]);

Manipulacin de Arreglos y Matrices


Arreglo Multidimensionales
Uso de Bucles int f,c; for (f=0;f <#defilas;f++) for(c=0;c<#decolumnas;c++) procesar_elemento[f][c];

Manipulacin de Arreglos y Matrices


Arreglo Multidimensionales
#include <stdio.h> #include <stdlib.h> void leer(int a[][5]); void escribir(const int a[][5]);

int main() { int a[3][5]; leer(a); escribir(a); system("PAUSE"); return 0; }

Manipulacin de Arreglos y Matrices


Arreglo Multidimensionales
void leer(int a[][5]) { int i,j; puts("Introduzca 15 numeros enteros, 5 por fila"); for(i=0;i < 3;i++) { printf("Fila %d: ",i); for(j=0;j<5;j++) scanf("%d",&a[i][j]); } }

Manipulacin de Arreglos y Matrices


Arreglo Multidimensionales
void escribir(const int a[][5]) { int i,j; for(i=0;i < 3;i++) {

for(j=0;j<5;j++)
printf(" %d",a[i][j]); printf("\n"); } }

Anda mungkin juga menyukai