You are on page 1of 2

Elementos de Programacin 1A E.T.S.I.

Informtica Gestin

Prctica 7: Arrays multidimensionales y Cadenas de caracteres


en C++.
Arrays Multidimensionales
A veces, es til y necesario poder declarar arrays de ms de una dimensin. Esto se corresponde con estructuras
de datos muy utilizadas como matrices, tablas, cubos, etc. Formalmente, pueden ser declarados como tipos y luego usarlo
para declarar variables:
typedef <tipo> <nomTipo> [<valor_cte>]{[<valor_cte>]};
y posteriormente
<nomTipo> <nomVar>;
o bien, en la declaracin de variables
<tipo> <nomVar> [<valor_cte>]{[<valor_cte>]};
Suponiendo declarados
const int DIM1=3;
const int DIM2=4;
Dichos arrays se declaran de la siguiente forma1:
typedef int TMatriz[DIM1][DIM2];
y posteriormente
TMatriz m;
o bien, en la declaracin de variables
int m[DIM1][DIM2];
El acceso a las componentes de una variable m de tipo TMatriz se realiza indicando sus ndices entre corchetes. Por
ejemplo, m[i][j] o bien m[1][2]

Cadenas de Caracteres (Strings).


Una cadena de caracteres no es ms que un array de caracteres.
EN C++ TODAS LAS CADENAS DE CARACTERES DEBEN LLEVAR EL CARCTER 0 COMO TERMINADOR.

Veamos a continuacin una posible definicin de cadenas de caracteres, as como la implementacin de algunas de las
funciones ms tpicas de manejo de cadenas de caracteres.
const char FINCAD = char(0)2;
const int MAXCAD = 20;
const int ENTER = '\n';
typedef char TCadena[MAXCAD+1]; // MAXCAD caracteres + FINCAD
int LongitudCadena(TCadena s)
{ int i;
i=0;
while ((i<MAXCAD)3&& (s[i]!=FINCAD) )
{ ++i;
}
return i;
}
void CopiaCadena(TCadena s1, TCadena &s2) // s2 <- s1
{ int i;
i=0;
while ( (i<MAXCAD) && (s1[i]!=FINCAD) )
1
2
3

La declaracin de tipos permite su uso a lo largo de todo el programa, lo que lo hace un mtodo ms adecuado y elegante.
Tambin es vlido el uso de '\0' para indicar el carcter constante 0
Si bien esta comparacin no es necesaria, es conveniente su uso para evitar errores producidos por datos "corruptos".

Jos Luis Pastrana Brincones @ 2002


1

Elementos de Programacin 1A E.T.S.I. Informtica Gestin


{ s2[i]=s1[i];
++i;
}
s2[i]=FINCAD;
}
void LeeCadena(TCadena &s)
{ int i;
char c;
i=0;
c = cin.get();
while ( (i<MAXCAD) && (c!=ENTER) )
{ s[i]=c;
++i;
c = cin.get4(); // cin.get lee 1 carcter sin saltarse los de control
}
s[i] = FINCAD;
}
Ejercicio 1. Implementa un procedimiento que concatene 2 cadenas de caracteres, de tal manera que la segunda quede
"pegada" detrs de la primera. Posteriormente, escriba un programa que lea 2 cadenas y muestre su concatenacin por
pantalla.
void append(TCadena &s1, TCadena s2)
Ejercicio 2. Escriba un programa que lea un NIF y compruebe que su letra es correcta, es decir, la letra introducida por
el usuario se corresponde con la calculada.
Algoritmo para el clculo del NIF:
1. Calcule el Mdulo 23 (resto de la divisin) del nmero del DNI.
2. La letra corresponde a la que haya para ese valor en la siguiente tabla:
MODULO
0
1
2
3
4
5
6
7
8
9
10
11

LETRA
T
R
W
A
G
H
Y
F
P
D
X
B

MODULO
12
13
14
15
16
17
18
19
20
21
22

LETRA
N
J
Z
S
Q
V
H
L
C
K
E

Se usa la funcin cin.get() porque cin ignora los espacios y caracteres de control.

Jos Luis Pastrana Brincones @ 2002


2

You might also like