Beruflich Dokumente
Kultur Dokumente
ETSIIT
Universidad de Granada
Curso 2015-16
DECSAI (Universidad de Granada)
Metodologa de la Programacin
Curso 2015-16
1 / 82
ndice I
1
2
3
4
5
6
7
8
9
10
11
Introduccin
Ejemplo de uso de arrays
Control del tamao de un array con un elemento centinela
Peculiaridad de arrays o matrices miembros de una estructura
Arrays y matrices de estructuras
Funciones y arrays
Paso de argumentos: array
Devolucin de arrays por funciones
Ejemplo de devolucin de un array por una funcin
Trabajando con arrays locales a funciones
Cadenas de caracteres estilo C
Declaracin e inicializacin de matrices de 2 dimensiones
Operaciones con matrices
Acceso, asignacin, lectura y escritura
Sobre el tamao de las matrices
Matrices de ms de 2 dimensiones
Funciones y matrices
Gestin de filas de una matriz como arrays
Metodologa de la Programacin
Curso 2015-16
2 / 82
Introduccin
2
3
4
5
6
7
8
9
10
11
Introduccin
Ejemplo de uso de arrays
Control del tamao de un array con un elemento centinela
Peculiaridad de arrays o matrices miembros de una estructura
Arrays y matrices de estructuras
Funciones y arrays
Paso de argumentos: array
Devolucin de arrays por funciones
Ejemplo de devolucin de un array por una funcin
Trabajando con arrays locales a funciones
Cadenas de caracteres estilo C
Declaracin e inicializacin de matrices de 2 dimensiones
Operaciones con matrices
Acceso, asignacin, lectura y escritura
Sobre el tamao de las matrices
Matrices de ms de 2 dimensiones
Funciones y matrices
Gestin de filas de una matriz como arrays
Metodologa de la Programacin
Curso 2015-16
3 / 82
Introduccin
Array
Un tipo de dato compuesto de un nmero fijo de elementos del mismo tipo
y donde cada uno de ellos es directamente accesible mediante un ndice.
notas =
notas[0]
2.4
notas[1]
4.9
...
...
Metodologa de la Programacin
notas[499]
6.7
Curso 2015-16
4 / 82
Introduccin
Declaracin de arrays
Declaracin de un array
<tipo> <identificador> [<N.Componentes>];
Ejemplo: double notas[500];
<tipo> indica el tipo de dato comn a todas las componentes del
array (double en el ejemplo).
<identificador> nombre genrico para todas las componentes.
<N.Componentes> determina el nmero de componentes del array
(500 en el ejemplo).
El nmero de componentes debe conocerse cuando se escribe el
programa y no es posible alterarlo durante la ejecucin del programa.
Pueden usarse literales o constantes enteras pero nunca una variable1 .
1
El estndar C99 permite usar una variable pero C++ estndar no lo admite.
g++ lo admite como extensin propia.
DECSAI (Universidad de Granada)
Metodologa de la Programacin
Curso 2015-16
5 / 82
Introduccin
Declaracin de arrays
Consejo
Usar constantes para especificar el tamao de los arrays.
Ventaja: es ms fcil adaptar el cdigo ante cambios de tamao.
const int NUM_ALUMNOS = 500;
double notas[NUM_ALUMNOS];
Metodologa de la Programacin
Curso 2015-16
6 / 82
Introduccin
Metodologa de la Programacin
Curso 2015-16
7 / 82
Introduccin
otros datos
v[0]
v[1]
v[2]
otros datos
v[499]
s bytes
Posicin de v[2]: s*2 bytes
Metodologa de la Programacin
Curso 2015-16
8 / 82
Introduccin
notas[499]
double notas[500];
notas
...
Metodologa de la Programacin
Curso 2015-16
9 / 82
Introduccin
Ejemplo
const int NUM_ALUMNOS=500;
double notas[NUM_ALUMNOS];
...
for(int i=0;i<NUM_ALUMNOS;i++)
cout<<notas[i]<<" ";
Metodologa de la Programacin
Curso 2015-16
10 / 82
Introduccin
Asignacin completa
No est permitida la asignacin completa
double notas[NUM_ALUMNOS];
double notas2[NUM_ALUMNOS];
...
notas2 = notas; // ERROR, esto no se puede hacer
Metodologa de la Programacin
Curso 2015-16
11 / 82
Introduccin
Metodologa de la Programacin
Curso 2015-16
12 / 82
Introduccin
Metodologa de la Programacin
Curso 2015-16
13 / 82
Introduccin
1 int main(){
2
const int DIM_NOTAS = 100; // Maximo numero de notas a manejar
3
double notas[DIM_NOTAS];
// Array de almacenamiento de notas
4
int util_notas; // Indica posiciones usadas del array
5
double media=0;
6
// Bucle de lectura de numero de alumnos: no puede ser negativo
7
// ni exceder la capacidad del array
8
do{
9
cout<<"Introduzca num. alumnos (entre 1 y "<<DIM_NOTAS<<"): ";
10
cin >> util_notas;
11
}while (util_notas < 1 || util_notas > DIM_NOTAS);
12
// Bucle de lectura de las notas
13
for (int i=0; i<util_notas; i++){
14
cout << "nota[" << i << "]: ";
15
cin >> notas[i];
16
}
17
// Bucle de calculo de la media
18
for (int i=0; i<util_notas; i++){
19
media += notas[i];
20
}
21
// Calculo de la media
22
media /= util_notas;
23
cout << "\nMedia: " << media << endl;
24 }
DECSAI (Universidad de Granada)
Metodologa de la Programacin
Curso 2015-16
14 / 82
Introduccin
Metodologa de la Programacin
Curso 2015-16
15 / 82
Introduccin
Metodologa de la Programacin
Curso 2015-16
16 / 82
Introduccin
Metodologa de la Programacin
Curso 2015-16
17 / 82
2
3
4
5
6
7
8
9
10
11
Introduccin
Ejemplo de uso de arrays
Control del tamao de un array con un elemento centinela
Peculiaridad de arrays o matrices miembros de una estructura
Arrays y matrices de estructuras
Funciones y arrays
Paso de argumentos: array
Devolucin de arrays por funciones
Ejemplo de devolucin de un array por una funcin
Trabajando con arrays locales a funciones
Cadenas de caracteres estilo C
Declaracin e inicializacin de matrices de 2 dimensiones
Operaciones con matrices
Acceso, asignacin, lectura y escritura
Sobre el tamao de las matrices
Matrices de ms de 2 dimensiones
Funciones y matrices
Gestin de filas de una matriz como arrays
Metodologa de la Programacin
Curso 2015-16
18 / 82
Metodologa de la Programacin
Curso 2015-16
19 / 82
2
3
4
5
6
7
8
9
10
11
Introduccin
Ejemplo de uso de arrays
Control del tamao de un array con un elemento centinela
Peculiaridad de arrays o matrices miembros de una estructura
Arrays y matrices de estructuras
Funciones y arrays
Paso de argumentos: array
Devolucin de arrays por funciones
Ejemplo de devolucin de un array por una funcin
Trabajando con arrays locales a funciones
Cadenas de caracteres estilo C
Declaracin e inicializacin de matrices de 2 dimensiones
Operaciones con matrices
Acceso, asignacin, lectura y escritura
Sobre el tamao de las matrices
Matrices de ms de 2 dimensiones
Funciones y matrices
Gestin de filas de una matriz como arrays
Metodologa de la Programacin
Curso 2015-16
20 / 82
Metodologa de la Programacin
Curso 2015-16
21 / 82
Funciones y arrays
2
3
4
5
6
7
8
9
10
11
Introduccin
Ejemplo de uso de arrays
Control del tamao de un array con un elemento centinela
Peculiaridad de arrays o matrices miembros de una estructura
Arrays y matrices de estructuras
Funciones y arrays
Paso de argumentos: array
Devolucin de arrays por funciones
Ejemplo de devolucin de un array por una funcin
Trabajando con arrays locales a funciones
Cadenas de caracteres estilo C
Declaracin e inicializacin de matrices de 2 dimensiones
Operaciones con matrices
Acceso, asignacin, lectura y escritura
Sobre el tamao de las matrices
Matrices de ms de 2 dimensiones
Funciones y matrices
Gestin de filas de una matriz como arrays
Metodologa de la Programacin
Curso 2015-16
22 / 82
Funciones y arrays
Metodologa de la Programacin
Curso 2015-16
23 / 82
Funciones y arrays
#include <iostream>
using namespace std;
void imprime_array (char v[5]){
for (int i=0; i<5; i++)
cout << v[i] << " ";
}
int main(){
char vocales[5]={a,e,i,o,u};
imprime_array(vocales);
}
Metodologa de la Programacin
Curso 2015-16
24 / 82
Funciones y arrays
Consideraciones:
la funcin asume que el tamao del array es 5. Es general esto?
qu ocurre si deseamos imprimir un array de enteros? sirve esta
funcin? se genera error de compilacin?
Nota: si necesitamos usar el mismo mtodo para diferentes tipos de datos,
habr que implementar una funcin para cada tipo.
Metodologa de la Programacin
Curso 2015-16
25 / 82
Funciones y arrays
#include <iostream>
using namespace std;
void imprime_array(char v[], int util){
for (int i=0; i<util; i++)
cout << v[i] << " ";
}
int main(){
char vocales[5]={a,e,i,o,u};
char digitos[10]={0,1,2,3,4,
5,6,7,8,9};
imprime_array(vocales, 5); cout<<endl;
imprime_array(digitos, 10); cout<<endl;
imprime_array(digitos, 5); cout<<endl; // del 0 al 4
imprime_array(vocales, 100); cout<<endl; // ERROR al ejecutar, no al
// compilar
}
Metodologa de la Programacin
Curso 2015-16
26 / 82
Funciones y arrays
e
1
1
e
i
2
2
i
o
3
3
o
u
4 5 6 7 8 9
4
u
0 1 2 3 4 5 6 7 8 9 @
P %
Metodologa de la Programacin
X %
s @
Curso 2015-16
27 / 82
Funciones y arrays
#include <iostream>
using namespace std;
void imprime_array(int v[], int util){
for (int i=0; i<util; i++)
cout << v[i] << " ";
}
void cambia_por_doble(int v[], int util){
for (int i=0; i<util; i++)
v[i] *= 2;
}
int main(){
const int DIM_ARRAY = 5;
int array[DIM_ARRAY]={4,2,7};
int util_array=3;
cout << "Original: ";
imprime_array(array, util_array);
cout << endl << "Modificado: ";
cambia_por_doble(array, util_array);
imprime_array(array, util_array);
}
Metodologa de la Programacin
Entorno de
cambia_por_doble
util (copia)
v (no es copia)
Entorno de main
array
util_array
DIM_ARRAY
Curso 2015-16
28 / 82
Funciones y arrays
A considerar:
hay algn problema si el nombre del array, en el main, fuera arrayMain,
por ejemplo?
hay algn problema si el argumento de las funciones llamado util se
llamase tambin util_array?
Debe quedar clara la relacin entre parmetros actuales y formales.
DECSAI (Universidad de Granada)
Metodologa de la Programacin
Curso 2015-16
29 / 82
Funciones y arrays
Metodologa de la Programacin
Curso 2015-16
30 / 82
Funciones y arrays
Metodologa de la Programacin
Curso 2015-16
31 / 82
Funciones y arrays
#include<iostream>
using namespace std;
void imprime_array (char v[]){
for (int i=0; i<5; i++)
cout << v[i] << " ";
}
int main(){
const char vocales[5]={a,e,i,o,u};
imprime_array(vocales); // ERROR de compilacin
}
Metodologa de la Programacin
Curso 2015-16
32 / 82
Funciones y arrays
Metodologa de la Programacin
Curso 2015-16
33 / 82
Funciones y arrays
#include <iostream>
using namespace std;
void imprime_array(const int v[], int util);
void solo_pares(const int v[], int util_v,
int pares[], int &util_pares);
int main(){
const int DIM=100;
int entrada[DIM] = {8,1,3,2,4,3,8},
salida[DIM];
int util_entrada = 7, util_salida;
solo_pares(entrada, util_entrada, salida, util_salida);
imprime_array(salida, util_salida);
}
Metodologa de la Programacin
Curso 2015-16
34 / 82
Funciones y arrays
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Metodologa de la Programacin
Curso 2015-16
35 / 82
Funciones y arrays
Ejemplo
Quitar los elementos consecutivos repetidos de un array, guardando el
resultado en otro array.
Metodologa de la Programacin
Curso 2015-16
36 / 82
Funciones y arrays
#include <iostream>
using namespace std;
/**
* Metodo para imprimir vector: nos aseguramos que el vector
* no se modificara
* @param vector a imprimir
* @param numero de elementos en el vector
*/
void imprime_array(const char v[], int util);
/**
* Metodo para quitar repetidos: solo si son valores consecutivos
* @param vector original
* @param contador de elementos en el vector original
* @param vector de destino
* @return contador de elementos en el vector resultado
*/
int quita_repes(const char original[], int util_original, char destino[]);
Metodologa de la Programacin
Curso 2015-16
37 / 82
Funciones y arrays
// Metodo main
int main(){
const int DIM =100;
char entrada[DIM]={b,b,i,e,n,n,n}, salida[DIM];
int util_entrada = 7, util_salida;
// Se quitan los repetidos
util_salida=quita_repes(entrada, util_entrada, salida);
// Se muestra el vector
imprime_array(salida, util_salida);
}
// Quitar repetidos consecutivos
int quita_repes(const char original[], int util_original, char destino[]){
int util_destino=1;
// Se copia el primero tal cual
destino[0] = original[0];
// Bucle de recorrido del vector: desde la primera posicion
Metodologa de la Programacin
Curso 2015-16
38 / 82
Funciones y arrays
Metodologa de la Programacin
Curso 2015-16
39 / 82
Funciones y arrays
Entrada: b b i e n n n
Salida: b i e n
Metodologa de la Programacin
Curso 2015-16
40 / 82
Funciones y arrays
Problema
Necesitamos un array local donde guardar el resultado del paso 1. Cmo
lo declaramos?
Lo ideal sera poder crear un array con el tamao justo: el nmero de
dgitos. Pero no sabemos cuntos habr....
Metodologa de la Programacin
Curso 2015-16
41 / 82
Funciones y arrays
Metodologa de la Programacin
Curso 2015-16
42 / 82
Funciones y arrays
1 #include <iostream>
2 using namespace std;
3 const int DIM = 100;
4
5 void quita_nodigitos(const int original[],
6
int util_original,int destino[], int &util_destino);
7 void imprimevector(const int v[], int util);
8 bool capicua(const int v[], int longitud);
9 int main(){
10
int entrada1[DIM]={1,2,3,4,3,2,1};
11
int util_entrada1=7;
12
int entrada2[DIM]={1,2,3,4,5,6,10, 7,8,9,10, 11, 9,12,
8, 13, 7, 6, -1, 5, 4, 3, 2, 1};
13
int util_entrada2=24;
14
15
imprimevector(entrada1, util_entrada1);
16
if (capicua(entrada1, util_entrada1))
17
cout << " es capicua\n";
18
else
19
cout << " no es capicua\n";
20
21
imprimevector(entrada2, util_entrada2);
22
DECSAI (Universidad de Granada)
Metodologa de la Programacin
Curso 2015-16
43 / 82
Funciones y arrays
23
if (capicua(entrada2, util_entrada2))
24
cout << " es capicua\n";
25
else
26
cout << " no es capicua\n";
27 }
28
29 void quita_nodigitos(const int original[],
30
int util_original,
31
int destino[], int &util_destino){
32
util_destino=0;
33
for (int i=0; i<util_original; i++)
34
if (original[i] > -1 && original[i] < 10){
35
destino[util_destino]=original[i];
36
util_destino++;
37
}
38 }
39
40
41
42
43
44
45
DECSAI (Universidad de Granada)
Metodologa de la Programacin
Curso 2015-16
44 / 82
Funciones y arrays
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Metodologa de la Programacin
Curso 2015-16
45 / 82
2
3
4
5
6
7
8
9
10
11
Introduccin
Ejemplo de uso de arrays
Control del tamao de un array con un elemento centinela
Peculiaridad de arrays o matrices miembros de una estructura
Arrays y matrices de estructuras
Funciones y arrays
Paso de argumentos: array
Devolucin de arrays por funciones
Ejemplo de devolucin de un array por una funcin
Trabajando con arrays locales a funciones
Cadenas de caracteres estilo C
Declaracin e inicializacin de matrices de 2 dimensiones
Operaciones con matrices
Acceso, asignacin, lectura y escritura
Sobre el tamao de las matrices
Matrices de ms de 2 dimensiones
Funciones y matrices
Gestin de filas de una matriz como arrays
Metodologa de la Programacin
Curso 2015-16
46 / 82
Cadenas de caracteres de C
Un array de tipo char de un tamao determinado acabado en un carcter
especial, el carcter \0 (carcter nulo), que marca el fin de la cadena
(vase uso del elemento centinela ).
Metodologa de la Programacin
Curso 2015-16
47 / 82
Metodologa de la Programacin
Curso 2015-16
48 / 82
\0
Metodologa de la Programacin
Curso 2015-16
49 / 82
Metodologa de la Programacin
Curso 2015-16
50 / 82
Metodologa de la Programacin
Curso 2015-16
51 / 82
Entrada/salida de cadenas
Para leer y escribir cadenas se pueden usar las operaciones de lectura y
escritura ya conocidas.
1
2
3
4
5
6
7
8
9
#include<iostream>
using namespace std;
int main(){
char nombre[80];
cout << "Introduce tu nombre: ";
cin >> nombre;
cout << "El nombre introducido es: " << nombre;
}
Problema
cin salta separadores antes del dato y se detiene cuando encuentra un separador (saltos de lnea, espacios en blanco y tabuladores). Es decir, no debe
usarse para leer cadenas de caracteres que contengan espacios en blanco.
Adems, no consume el separador, que quedar pendiente para prximas
operaciones de lectura.
DECSAI (Universidad de Granada)
Metodologa de la Programacin
Curso 2015-16
52 / 82
Entrada/salida de cadenas
Solucin: (si deseamos leer algn espacio en blanco)
cin.getline(<cadena>, <tamao>);
Lee hasta que se encuentra un salto de lnea o se alcanz el lmite de
lectura.
Cuidado: al combinar el uso de cin y cin.getline hay que ser consciente
dnde se dejar la lectura en cada momento.
1
2
3
4
5
6
7
8
9
10
11
char nombre[80],direccion[120];
int edad;
cout << "Introduce tu nombre: ";
cin.getline(nombre,80);
cout << "El nombre introducido es: " << nombre;
cout << "\nIntroduce tu edad: ";
cin >> edad;
cout << "La edad introducida es: " << edad;
cout << "\nIntroduce tu direccion: ";
cin.getline(direccion,120);
cout << "La direccion introducida es: " << direccion;
Metodologa de la Programacin
Curso 2015-16
53 / 82
Entrada/salida de cadenas
Introduce tu nombre: Andrs Cano Utrera
El nombre introducido es: Andrs Cano Utrera
Introduce tu edad: 20
La edad introducida es: 20
Introduce tu direccion: La direccion introducida es:
Problema
cin se detiene cuando encuentra un separador, y no lee el separador! (no
lo consume y hace que getline d por finalizada su operacin al
encontrarlo)
Solucin: Crear una funcin lee_linea que evite las lneas vacas
1 void lee_linea(char c[], int tamano){
2
do{
3
cin.getline(c, tamano);
4
} while (c[0] == \0); // equivale a } while(longitud(c)==0);
5 }
1
2
3
4
5
6
Metodologa de la Programacin
Curso 2015-16
54 / 82
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main(){
char cadena1[]="Hola";
string cadena2;
char cadena3[10];
cadena2=cadena1; // cstring-->string
strcpy (cadena3, cadena2.c_str()); // string-->cstring
cout<<"cadena2="<<cadena2<<endl;
cout<<"cadena3="<<cadena3<<endl;
}
Metodologa de la Programacin
Curso 2015-16
55 / 82
La biblioteca cstring I
Metodologa de la Programacin
Curso 2015-16
56 / 82
La biblioteca cstring II
int strcmp(const char s1[], const char s2[])
Compara las cadenas s1 y s2. Si la cadena s1 es menor
(lexicogrficamente) que s2 devuelve un valor menor que cero, si son
iguales devuelve 0 y en otro caso devuelve un valor mayor que cero.
conts char * strstr(const char s1[], const char s2[])
char * strstr(char s1[], const char s2[])
Devuelve un puntero a la primera ocurrencia de s2 en s1, o un
puntero nulo si s2 no es parte de s1.
Metodologa de la Programacin
Curso 2015-16
57 / 82
#include<iostream>
#include<cstring>
using namespace std;
int main(){
const int DIM=100;
char c1[DIM]="Hola";
char c2[DIM];
strcpy(c2, "mundo");
strcat(c1, " ");
strcat(c1, c2);
cout <<"Longitudes:"<<strlen(c1)<<" "<<strlen(c2);
cout << "\nc1: " << c1 << " c2: " << c2;
if (strcmp(c1,"adis mundo cruel") < 0)
cout << "\nCuidado con las maysculas\n";
if (strcmp(c2, "mucho") > 0)
cout << "\n\"mundo\" es mayor que \"mucho\"\n";
}
Metodologa de la Programacin
Curso 2015-16
58 / 82
#include <iostream>
#include <cstring>
using namespace std;
void lee_linea(char c[], int tamano);
void deja_solo_primera_palabra(char c[]);
int main() {
const int DIM=100;
char cadena[DIM];
cout << "Introduce una cadena: ";
lee_linea(cadena, DIM);
deja_solo_primera_palabra(cadena);
cout << "Resultado = " << cadena << endl;
}
void deja_solo_primera_palabra(char c[]) {
int i=0;
// No hay espacios en blanco al inicio
while (c[i] != && c[i] != \t && i < strlen(c))
i++;
if (i < strlen(c))
c[i] = \0;
}
Metodologa de la Programacin
Curso 2015-16
59 / 82
#include <iostream>
#include <cstring>
using namespace std;
const int DIM=100;
void lee_linea(char c[], int tamano);
void recorta(const char c1[], int ini, int lon, char c2[]);
int main() {
char cadena1[DIM], cadena2[DIM];
int i, l;
cout << "Introduce una cadena: ";
lee_linea(cadena1, DIM);
cout << "Introduce el inicio y la longitud (enteros): ";
cin >> i >> l;
recorta(cadena1,i,l,cadena2);
cout << "Resultado = >" << cadena2 << endl;
}
void recorta(const char c1[], int ini, int lon, char c2[]) {
int i=0;
while (i+ini < strlen(c1)//para que ini o lon no sean muy grandes
&& i<lon) {
// para contar hasta lon
c2[i] = c1[i+ini];
i++;
}
c2[i] = \0;
}
Metodologa de la Programacin
Curso 2015-16
60 / 82
2
3
4
5
6
7
8
9
10
11
Introduccin
Ejemplo de uso de arrays
Control del tamao de un array con un elemento centinela
Peculiaridad de arrays o matrices miembros de una estructura
Arrays y matrices de estructuras
Funciones y arrays
Paso de argumentos: array
Devolucin de arrays por funciones
Ejemplo de devolucin de un array por una funcin
Trabajando con arrays locales a funciones
Cadenas de caracteres estilo C
Declaracin e inicializacin de matrices de 2 dimensiones
Operaciones con matrices
Acceso, asignacin, lectura y escritura
Sobre el tamao de las matrices
Matrices de ms de 2 dimensiones
Funciones y matrices
Gestin de filas de una matriz como arrays
Metodologa de la Programacin
Curso 2015-16
61 / 82
Metodologa de la Programacin
COL
FIL
Curso 2015-16
62 / 82
Inicializacin
Forma segura: Poner entre llaves los valores de cada fila.
int m[2][3]={{1,2,3},{4,5,6}};
// m tendr: 1 2 3
//
4 5 6
Si no hay suficientes valores para una fila determinada, los elementos
restantes se inicializan a 0.
int mat[2][2]={{1},{3,4}};
// mat tendr: 1 0
//
3 4
Si se eliminan los corchetes que encierran cada fila, se inicializan los
elementos de la primera fila y despus los de la segunda, y as
sucesivamente.
int A[2][3]={1, 2, 3, 4, 5} // A tendr: 1 2 3
//
4 5 0
Metodologa de la Programacin
Curso 2015-16
63 / 82
La declaracin en detalle
Metodologa de la Programacin
Curso 2015-16
64 / 82
otros datos
fila 0
fila 1
{
{
otros datos
Metodologa de la Programacin
Curso 2015-16
65 / 82
2
3
4
5
6
7
8
9
10
11
Introduccin
Ejemplo de uso de arrays
Control del tamao de un array con un elemento centinela
Peculiaridad de arrays o matrices miembros de una estructura
Arrays y matrices de estructuras
Funciones y arrays
Paso de argumentos: array
Devolucin de arrays por funciones
Ejemplo de devolucin de un array por una funcin
Trabajando con arrays locales a funciones
Cadenas de caracteres estilo C
Declaracin e inicializacin de matrices de 2 dimensiones
Operaciones con matrices
Acceso, asignacin, lectura y escritura
Sobre el tamao de las matrices
Matrices de ms de 2 dimensiones
Funciones y matrices
Gestin de filas de una matriz como arrays
Metodologa de la Programacin
Curso 2015-16
66 / 82
Metodologa de la Programacin
Curso 2015-16
67 / 82
2
3
4
5
6
7
8
9
10
11
Introduccin
Ejemplo de uso de arrays
Control del tamao de un array con un elemento centinela
Peculiaridad de arrays o matrices miembros de una estructura
Arrays y matrices de estructuras
Funciones y arrays
Paso de argumentos: array
Devolucin de arrays por funciones
Ejemplo de devolucin de un array por una funcin
Trabajando con arrays locales a funciones
Cadenas de caracteres estilo C
Declaracin e inicializacin de matrices de 2 dimensiones
Operaciones con matrices
Acceso, asignacin, lectura y escritura
Sobre el tamao de las matrices
Matrices de ms de 2 dimensiones
Funciones y matrices
Gestin de filas de una matriz como arrays
Metodologa de la Programacin
Curso 2015-16
68 / 82
Metodologa de la Programacin
Curso 2015-16
69 / 82
do{
cout << "Introducir el nmero de columnas: ";
cin >> util_col;
}while ((util_col<1) || (util_col>COL));
for (f=0 ; f<util_fil; f++)
for (c=0 ; c<util_col ; c++){
cout << "Introducir el elemento ("
<< f << "," << c << "): ";
cin >> m[f][c];
}
cout << "\nIntroduzca elemento a buscar: ";
cin >> buscado;
encontrado=false;
for (f=0; !encontrado && (f<util_fil) ; f++)
for (c=0; !encontrado && (c<util_col) ; c++)
if (m[f][c] == buscado){
encontrado = true;
fil_enc = f; col_enc = c;
}
Metodologa de la Programacin
Curso 2015-16
70 / 82
38
if (encontrado)
39
cout << "Encontrado en la posicin "
40
<< fil_enc << "," << col_enc << endl;
41
else
42
cout << "Elemento no encontrado\n";
43
44
return 0;
45 }
Metodologa de la Programacin
Curso 2015-16
71 / 82
Matrices de ms de 2 dimensiones
2
3
4
5
6
7
8
9
10
11
Introduccin
Ejemplo de uso de arrays
Control del tamao de un array con un elemento centinela
Peculiaridad de arrays o matrices miembros de una estructura
Arrays y matrices de estructuras
Funciones y arrays
Paso de argumentos: array
Devolucin de arrays por funciones
Ejemplo de devolucin de un array por una funcin
Trabajando con arrays locales a funciones
Cadenas de caracteres estilo C
Declaracin e inicializacin de matrices de 2 dimensiones
Operaciones con matrices
Acceso, asignacin, lectura y escritura
Sobre el tamao de las matrices
Matrices de ms de 2 dimensiones
Funciones y matrices
Gestin de filas de una matriz como arrays
Metodologa de la Programacin
Curso 2015-16
72 / 82
Matrices de ms de 2 dimensiones
Matrices de ms de 2 dimensiones
Podemos declarar tantas dimensiones como queramos aadiendo ms
corchetes.
PROF
COL
1 int main(){
2
const int FIL = 4;
3
const int COL = 5;
4
const int PROF =3;
5
double mat[PROF][FIL][COL];
6
7
double puzle[7][7][19][19];
8 }
FIL
Metodologa de la Programacin
Curso 2015-16
73 / 82
Funciones y matrices
2
3
4
5
6
7
8
9
10
11
Introduccin
Ejemplo de uso de arrays
Control del tamao de un array con un elemento centinela
Peculiaridad de arrays o matrices miembros de una estructura
Arrays y matrices de estructuras
Funciones y arrays
Paso de argumentos: array
Devolucin de arrays por funciones
Ejemplo de devolucin de un array por una funcin
Trabajando con arrays locales a funciones
Cadenas de caracteres estilo C
Declaracin e inicializacin de matrices de 2 dimensiones
Operaciones con matrices
Acceso, asignacin, lectura y escritura
Sobre el tamao de las matrices
Matrices de ms de 2 dimensiones
Funciones y matrices
Gestin de filas de una matriz como arrays
Metodologa de la Programacin
Curso 2015-16
74 / 82
Funciones y matrices
Funciones y matrices
Paso de matrices como parmetro de funciones y mtodos
Para pasar una matriz hay que especificar todas las dimensiones menos la
primera
Ejemplo:
void lee_matriz(double m[][COL], int util_fil, int util_col);
Metodologa de la Programacin
Curso 2015-16
75 / 82
Funciones y matrices
Problema
Hacer un programa para buscar un elemento en una matriz 2D de doubles.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
const int FIL=20, COL=30;
void lee_matriz(double m[][COL],
int util_fil, int util_col){
for (int f=0 ; f<util_fil; f++)
for (int c=0 ; c<util_col ; c++){
cout << "Introducir el elemento ("
<< f << "," << c << "): ";
cin >> m[f][c];
}
}
int lee_int(const char mensaje[], int min, int max){
int aux;
do{
cout << mensaje;
cin >> aux;
}while ((aux<min) || (aux>max));
return aux;
}
Metodologa de la Programacin
Curso 2015-16
76 / 82
Funciones y matrices
Metodologa de la Programacin
Curso 2015-16
77 / 82
Funciones y matrices
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 }
1, COL);
lee_matriz(m, util_fil, util_col);
cout << "\nIntroduzca elemento a buscar: ";
cin >> buscado;
busca_matriz(m, util_fil, util_col, buscado,
fil_enc, col_enc);
if (fil_enc != -1)
cout << "Encontrado en la posicin "
<< fil_enc << "," << col_enc << endl;
else
cout << "Elemento no encontrado\n";
return 0;
Metodologa de la Programacin
Curso 2015-16
78 / 82
2
3
4
5
6
7
8
9
10
11
Introduccin
Ejemplo de uso de arrays
Control del tamao de un array con un elemento centinela
Peculiaridad de arrays o matrices miembros de una estructura
Arrays y matrices de estructuras
Funciones y arrays
Paso de argumentos: array
Devolucin de arrays por funciones
Ejemplo de devolucin de un array por una funcin
Trabajando con arrays locales a funciones
Cadenas de caracteres estilo C
Declaracin e inicializacin de matrices de 2 dimensiones
Operaciones con matrices
Acceso, asignacin, lectura y escritura
Sobre el tamao de las matrices
Matrices de ms de 2 dimensiones
Funciones y matrices
Gestin de filas de una matriz como arrays
Metodologa de la Programacin
Curso 2015-16
79 / 82
Metodologa de la Programacin
Curso 2015-16
80 / 82
Metodologa de la Programacin
Curso 2015-16
81 / 82
Metodologa de la Programacin
Curso 2015-16
82 / 82