1 ARREGLOS (ARRAYS)

C
CE
EN
NTTR
RO
OS
SU
UP
PE
ER
RIIO
OR
RS
SU
UP
PE
ER
RIIO
OR
RD
DE
EA
ALLTTA
A
E
S
P
E
C
I
A
L
I
Z
A
C
I
Ó
N
Y
A
S
E
S
O
R
Í
A
ESPECIALIZACIÓN Y ASESORÍA
http://www.cfape.com
P
PR
RO
OG
GR
RA
AM
MA
AC
CIIÓ
ÓN
NE
EN
N LLA
AP
PLLA
ATTA
AFFO
OR
RM
MA
AW
WIIN
ND
DO
OW
WS
S http://www.cfape.com/
P
P
R
O
G
R
A
M
A
C
Ó
N
E
N
C
C
N
V
E
B
Á
S
C
O
C
U
R
S
O
O
N
N
E
PR
RO
OG
GR
RA
AM
MA
AC
CIIIÓ
ÓN
NE
EN
NC
C///C
C++++++ N
NIIIV
VE
ELLL B
BÁ
ÁS
SIIIC
CO
O (((C
CU
UR
RS
SO
OO
ON
N---LLLIIIN
NE
E)))
OBJETIVOS
Explicar los Arreglos.
Declarar y definir Vector
Declarar y definir Matrices
Declarar y definir Arrays Multidimensionales.
LABORATORIO
1
Msc. Walter Fernandez Toglio.
ARREGLOS (ARRAYS)
1
C
CE
EN
NTTR
RO
OS
SU
UP
PE
ER
RIIO
OR
RS
SU
UP
PE
ER
RIIO
OR
RD
DE
EA
ALLTTA
A
E
S
P
E
C
I
A
L
I
Z
A
C
I
Ó
N
Y
A
S
E
S
O
R
Í
A
ESPECIALIZACIÓN Y ASESORÍA
http://www.cfape.com
P
PR
RO
OG
GR
RA
AM
MA
AC
CIIÓ
ÓN
NE
EN
N LLA
AP
PLLA
ATTA
AFFO
OR
RM
MA
AW
WIIN
ND
DO
OW
WS
S http://www.cfape.com/
P
P
R
O
G
R
A
M
A
C
Ó
N
E
N
C
C
N
V
E
B
Á
S
C
O
C
U
R
S
O
O
N
N
E
PR
RO
OG
GR
RA
AM
MA
AC
CIIIÓ
ÓN
NE
EN
NC
C///C
C++++++ N
NIIIV
VE
ELLL B
BÁ
ÁS
SIIIC
CO
O (((C
CU
UR
RS
SO
OO
ON
N---LLLIIIN
NE
E)))
TEMAS
Arreglos de 1D o Vectores
Arreglos de 2D o Matriz
Arreglos Multidimensionales
SOFTWARE NECESARIO
Dev-C++ 4.9.9.2
http://sourceforge.net/projects/dev-cpp/files/Binaries/
NetBeans IDE C/C++
http://netbeans.org/features/cpp/
Code::Blocks
http://www.codeblocks.org/downloads/26
Eclipse C++
http://www.eclipse.org/downloads/packages/eclipse-ide-ccdevelopers-includes-incubating-components/indigosr1
Visual C++
http://www.microsoft.com/visualstudio/eng/products/visual-studioexpress-products
Borland C++
http://edn.embarcadero.com/article/20633
Msc. Walter Fernandez Toglio.
2
C
CE
EN
NTTR
RO
OS
SU
UP
PE
ER
RIIO
OR
RS
SU
UP
PE
ER
RIIO
OR
RD
DE
EA
ALLTTA
A
E
S
P
E
C
I
A
L
I
Z
A
C
I
Ó
N
Y
A
S
E
S
O
R
Í
A
ESPECIALIZACIÓN Y ASESORÍA
http://www.cfape.com
P
PR
RO
OG
GR
RA
AM
MA
AC
CIIÓ
ÓN
NE
EN
N LLA
AP
PLLA
ATTA
AFFO
OR
RM
MA
AW
WIIN
ND
DO
OW
WS
S http://www.cfape.com/
P
P
R
O
G
R
A
M
A
C
Ó
N
E
N
C
C
N
V
E
B
Á
S
C
O
C
U
R
S
O
O
N
N
E
PR
RO
OG
GR
RA
AM
MA
AC
CIIIÓ
ÓN
NE
EN
NC
C///C
C++++++ N
NIIIV
VE
ELLL B
BÁ
ÁS
SIIIC
CO
O (((C
CU
UR
RS
SO
OO
ON
N---LLLIIIN
NE
E)))
MARCO TEÓRICO
 Documentación y ejercicios del documento de teoría.
Msc. Walter Fernandez Toglio.
3
C
CE
EN
NTTR
RO
OS
SU
UP
PE
ER
RIIO
OR
RS
SU
UP
PE
ER
RIIO
OR
RD
DE
EA
ALLTTA
A
E
S
P
E
C
I
A
L
I
Z
A
C
I
Ó
N
Y
A
S
E
S
O
R
Í
A
ESPECIALIZACIÓN Y ASESORÍA
http://www.cfape.com
P
PR
RO
OG
GR
RA
AM
MA
AC
CIIÓ
ÓN
NE
EN
N LLA
AP
PLLA
ATTA
AFFO
OR
RM
MA
AW
WIIN
ND
DO
OW
WS
S http://www.cfape.com/
P
P
R
O
G
R
A
M
A
C
Ó
N
E
N
C
C
N
V
E
B
Á
S
C
O
C
U
R
S
O
O
N
N
E
PR
RO
OG
GR
RA
AM
MA
AC
CIIIÓ
ÓN
NE
EN
NC
C///C
C++++++ N
NIIIV
VE
ELLL B
BÁ
ÁS
SIIIC
CO
O (((C
CU
UR
RS
SO
OO
ON
N---LLLIIIN
NE
E)))
ACTIVIDADES
Analizar y explicar el funcionamiento de .cada uno de los ejemplos.
ARREGLOS
La estructura de datos mas conocida!
Secuencias Homogéneas, de tamaño fijo (de cualquier tipo)
Acceso aleatorio (Random access) via el operador de indexado - [ ]
Inserción y borrado a tiempo constante al final.
Los índices comienzan por 0 (primer elemento)
 El último elemento tiene el índice n-1
EJEMPLO:
#include <iostream>
const int SIZE = 20;
int main()
{
int i, n;
int nums[SIZE]; /*Leer numeros. Parar al leer 0 */
for (n = 0; n < SIZE; ++n) {
int input;
std::cin >> input;
if (input == 0)
break;
nums[n] = input;
}
for (i = n-1; i >= 0; --i)
std::cout << nums[i];
return 0;
}
ARRAYS LINEALES
Conocido como vector.
Son referenciados con un solo indice Ejem: Numero[2], Nombre[5].
EJEMPLO:
float Numeros[200];
char Codigo[35];
Msc. Walter Fernandez Toglio.
4
C
CE
EN
NTTR
RO
OS
SU
UP
PE
ER
RIIO
OR
RS
SU
UP
PE
ER
RIIO
OR
RD
DE
EA
ALLTTA
A
E
S
P
E
C
I
A
L
I
Z
A
C
I
Ó
N
Y
A
S
E
S
O
R
Í
A
ESPECIALIZACIÓN Y ASESORÍA
http://www.cfape.com
P
PR
RO
OG
GR
RA
AM
MA
AC
CIIÓ
ÓN
NE
EN
N LLA
AP
PLLA
ATTA
AFFO
OR
RM
MA
AW
WIIN
ND
DO
OW
WS
S http://www.cfape.com/
P
P
R
O
G
R
A
M
A
C
Ó
N
E
N
C
C
N
V
E
B
Á
S
C
O
C
U
R
S
O
O
N
N
E
PR
RO
OG
GR
RA
AM
MA
AC
CIIIÓ
ÓN
NE
EN
NC
C///C
C++++++ N
NIIIV
VE
ELLL B
BÁ
ÁS
SIIIC
CO
O (((C
CU
UR
RS
SO
OO
ON
N---LLLIIIN
NE
E)))
ARRAYS MULTIDIMENSIONALES
Los arreglos lineales, tambien son conocidos como arreglos unidimensionales, puesto que son
referenciados con un solo indice.
Aquellos arrays que son referenciados por mas de un indice, se denominan multidimensionales .
EJEMPLO:
int Empleados[2][5]; //Array de 2 dimensiones.
int Empleados[2][5][10]; //Array de 3 dimensiones.
Empleado[0][2][5]=345;
EJEMPLO: Array
2D
#include <iostream>
int main()
{
int a[][2] = {{1,2}, {3,4}, {5,6}};
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 2; ++j)
std::cout << a[i][j];
std::cout << std::endl;
}
return 0;
}
EJEMPLO:
Array 3D
#include <iostream>
int main()
{
int a[][3][2] = {{{1,2}, {3,4}, {5,6}},
{{7,8}, {9,0}, {1,2}}};
for (int i = 0; i < 2; ++i){
for (int j = 0; j < 3; ++j){
for (int k = 0; k < 2; ++k)
std::cout << a[i][j][k];
std::cout << std::endl;
}
std::cout << std::endl;
}
retun 0;
}
Msc. Walter Fernandez Toglio.
5
C
CE
EN
NTTR
RO
OS
SU
UP
PE
ER
RIIO
OR
RS
SU
UP
PE
ER
RIIO
OR
RD
DE
EA
ALLTTA
A
E
S
P
E
C
I
A
L
I
Z
A
C
I
Ó
N
Y
A
S
E
S
O
R
Í
A
ESPECIALIZACIÓN Y ASESORÍA
http://www.cfape.com
P
PR
RO
OG
GR
RA
AM
MA
AC
CIIÓ
ÓN
NE
EN
N LLA
AP
PLLA
ATTA
AFFO
OR
RM
MA
AW
WIIN
ND
DO
OW
WS
S http://www.cfape.com/
P
P
R
O
G
R
A
M
A
C
Ó
N
E
N
C
C
N
V
E
B
Á
S
C
O
C
U
R
S
O
O
N
N
E
PR
RO
OG
GR
RA
AM
MA
AC
CIIIÓ
ÓN
NE
EN
NC
C///C
C++++++ N
NIIIV
VE
ELLL B
BÁ
ÁS
SIIIC
CO
O (((C
CU
UR
RS
SO
OO
ON
N---LLLIIIN
NE
E)))
EJEMPLO
Desarrollar un programa que calcule la cantidad de veces que se repite dentro de un arreglo.
SOLUCIÓN
#include<stdio.h>
int main()
{
int n, i, e, esta;
float prom;
int A[100];
printf("Ingreso cantidad de datos ");
scanf("%d",&n);
for(i=0; i<n; i++)
{
printf("Dato %d = ",i);
scanf("%d",&e);
A[i] = e;
}
printf("ingrese elemento a buscar\n");
scanf("%d",&e);
printf("Calculando...\n");
esta = 0;
for(i=0; i<n; i++)
{
if(e == A[i])
{
esta++;
}
}
printf("Muestra de datos\n");
for(i=0; i<n; i++)
{
printf("A[%d] = %d\n",i,A[i]);
}
printf("El elemento %d se encuentra %d veces\n",e,esta);
}
Msc. Walter Fernandez Toglio.
6
C
CE
EN
NTTR
RO
OS
SU
UP
PE
ER
RIIO
OR
RS
SU
UP
PE
ER
RIIO
OR
RD
DE
EA
ALLTTA
A
E
S
P
E
C
I
A
L
I
Z
A
C
I
Ó
N
Y
A
S
E
S
O
R
Í
A
ESPECIALIZACIÓN Y ASESORÍA
http://www.cfape.com
P
PR
RO
OG
GR
RA
AM
MA
AC
CIIÓ
ÓN
NE
EN
N LLA
AP
PLLA
ATTA
AFFO
OR
RM
MA
AW
WIIN
ND
DO
OW
WS
S http://www.cfape.com/
P
P
R
O
G
R
A
M
A
C
Ó
N
E
N
C
C
N
V
E
B
Á
S
C
O
C
U
R
S
O
O
N
N
E
PR
RO
OG
GR
RA
AM
MA
AC
CIIIÓ
ÓN
NE
EN
NC
C///C
C++++++ N
NIIIV
VE
ELLL B
BÁ
ÁS
SIIIC
CO
O (((C
CU
UR
RS
SO
OO
ON
N---LLLIIIN
NE
E)))
EJEMPLO
Desarrollar un programa que calcule la UNION, INTERSECCIÓN y DIFERENCIA de 2 vectores
dados.
SOLUCIÓN
#include<stdio.h>
void llenar(int A[], int n)
{
int i;
int dato;
for(i=0; i<n; i++)
{
printf("Ingrese dato : ");
scanf("%d",&dato);
A[i] = dato;
}
}
void mostrar(int A[], int n)
{
int i;
for(i=0; i<n; i++)
{
printf("Dato[%d] = %d\n",i,A[i]);
}
}
int buscar(int A[], int n, int e)
{
int i;
int esta = 0;
for(i=0; i<n; i++)
{
if(A[i] == e)
{
esta = 1;
}
}
return esta;
}
void unionconj(int A[], int n, int B[], int m, int C[],int *k)
{
int i, j, h,res;
for(i=0; i<n; i++)
{
C[i] = A[i];
}
h = n;
for(j=0; j<m; j++)
{
res = buscar(A,n, B[j]);
if(res != 1)
{
C[h] = B[j];
h++;
}
}
*k = h;
}
Msc. Walter Fernandez Toglio.
7
C
CE
EN
NTTR
RO
OS
SU
UP
PE
ER
RIIO
OR
RS
SU
UP
PE
ER
RIIO
OR
RD
DE
EA
ALLTTA
A
E
S
P
E
C
I
A
L
I
Z
A
C
I
Ó
N
Y
A
S
E
S
O
R
Í
A
ESPECIALIZACIÓN Y ASESORÍA
http://www.cfape.com
P
PR
RO
OG
GR
RA
AM
MA
AC
CIIÓ
ÓN
NE
EN
N LLA
AP
PLLA
ATTA
AFFO
OR
RM
MA
AW
WIIN
ND
DO
OW
WS
S http://www.cfape.com/
P
P
R
O
G
R
A
M
A
C
Ó
N
E
N
C
C
N
V
E
B
Á
S
C
O
C
U
R
S
O
O
N
N
E
PR
RO
OG
GR
RA
AM
MA
AC
CIIIÓ
ÓN
NE
EN
NC
C///C
C++++++ N
NIIIV
VE
ELLL B
BÁ
ÁS
SIIIC
CO
O (((C
CU
UR
RS
SO
OO
ON
N---LLLIIIN
NE
E)))
void interconj(int A[], int n, int B[], int m, int C[],int *k)
{
int i, j, h,res;
h = 0;
for(j=0; j<m; j++)
{
res = buscar(A,n, B[j]);
if(res == 1)
{
C[h] = B[j];
h++;
}
}
*k = h;
}
void difaporb(int A[], int n, int B[], int m, int C[],int *k)
{
int i, j, h,res;
h = 0;
for(j=0; j<n; j++)
{
res = buscar(B,m, A[j]);
if(res != 1)
{
C[h] = A[j];
h++;
}
}
*k = h;
}
void difbpora(int A[], int n, int B[], int m, int C[],int *k)
{
int i, j, h,res;
h = 0;
for(j=0; j<m; j++)
{
res = buscar(A,n, B[j]);
if(res != 1)
{
C[h] = B[j];
h++;
}
}
*k = h;
}
int main()
{
int A[100]; //definir un arreglo
int B[100]; //definir un arreglo
int C[200]; //definir un arreglo
int n,m,e,k;
printf("Ingrese cantidad de elementos de A : ");
scanf("%d",&n);
printf("Ingrese cantidad de elementos de B : ");
scanf("%d",&m);
printf("Llenando A :\n");
llenar(A,n);
printf("Llenando B :\n");
Msc. Walter Fernandez Toglio.
8
C
CE
EN
NTTR
RO
OS
SU
UP
PE
ER
RIIO
OR
RS
SU
UP
PE
ER
RIIO
OR
RD
DE
EA
ALLTTA
A
E
S
P
E
C
I
A
L
I
Z
A
C
I
Ó
N
Y
A
S
E
S
O
R
Í
A
ESPECIALIZACIÓN Y ASESORÍA
http://www.cfape.com
P
PR
RO
OG
GR
RA
AM
MA
AC
CIIÓ
ÓN
NE
EN
N LLA
AP
PLLA
ATTA
AFFO
OR
RM
MA
AW
WIIN
ND
DO
OW
WS
S http://www.cfape.com/
P
P
R
O
G
R
A
M
A
C
Ó
N
E
N
C
C
N
V
E
B
Á
S
C
O
C
U
R
S
O
O
N
N
E
PR
RO
OG
GR
RA
AM
MA
AC
CIIIÓ
ÓN
NE
EN
NC
C///C
C++++++ N
NIIIV
VE
ELLL B
BÁ
ÁS
SIIIC
CO
O (((C
CU
UR
RS
SO
OO
ON
N---LLLIIIN
NE
E)))
llenar(B,m);
printf("CONJUNTO A :\n");
mostrar(A,n);
printf("CONJUNTO B :\n");
mostrar(B,m);
unionconj(A,n,B,m,C,&k);
printf("CONJUNTO UNION C :\n");
mostrar(C,k);
interconj(A,n,B,m,C,&k);
printf("CONJUNTO INTER C :\n");
mostrar(C,k);
difaporb(A,n,B,m,C,&k);
printf("CONJUNTO A-B :\n");
mostrar(C,k);
difbpora(A,n,B,m,C,&k);
printf("CONJUNTO B-A :\n");
mostrar(C,k);
}
Msc. Walter Fernandez Toglio.
9
C
CE
EN
NTTR
RO
OS
SU
UP
PE
ER
RIIO
OR
RS
SU
UP
PE
ER
RIIO
OR
RD
DE
EA
ALLTTA
A
E
S
P
E
C
I
A
L
I
Z
A
C
I
Ó
N
Y
A
S
E
S
O
R
Í
A
ESPECIALIZACIÓN Y ASESORÍA
http://www.cfape.com
P
PR
RO
OG
GR
RA
AM
MA
AC
CIIÓ
ÓN
NE
EN
N LLA
AP
PLLA
ATTA
AFFO
OR
RM
MA
AW
WIIN
ND
DO
OW
WS
S http://www.cfape.com/
P
P
R
O
G
R
A
M
A
C
Ó
N
E
N
C
C
N
V
E
B
Á
S
C
O
C
U
R
S
O
O
N
N
E
PR
RO
OG
GR
RA
AM
MA
AC
CIIIÓ
ÓN
NE
EN
NC
C///C
C++++++ N
NIIIV
VE
ELLL B
BÁ
ÁS
SIIIC
CO
O (((C
CU
UR
RS
SO
OO
ON
N---LLLIIIN
NE
E)))
EJERCICIOS
1 Leer una matriz de 3 por 3 elementos y calcular la suma de cada una de sus filas y columnas,
dejando dichos resultados en dos vectores, uno de la suma de las filas y el otro de las columnas.
2 Calcular la suma de todos los elementos de un array de 3 X 4 X 5, asi como la media aritmetica.
3 Escribir un programa que lea una cadena de caracteres que representa el nombre de una entidad y
obtenga como resultado, en otra cadena, el acrónimo de la misma.
El programa principal realizará las siguientes operaciones:
 Declarar una cadena de manera estática y de longitud 100
 Leer la cadena con fgets
 Contar el número de palabras
 Llamar a la función void ObtenerSiglas(char frase[], char *siglas)
 Mostrar los resultados por pantalla
Ejemplo:
Entrada: Tren articulado ligero Goicoechea Oriol
Salida: Tren articulado ligero Goicoechea Oriol
T.A.L.G.O.
4. Escribir un programa que lea una frase con fgets y calcule el número de letras mayúsculas y el
número de letras minúsculas.
5. Escribir un procedimiento que permita imprimir la triangular infierior de una matriz de nxn.
6. Dada una matriz de nxm, que representa n numeros decimales, cada columna representa un
numero en donde cada digito esta almacenado en cada casilla. Determinar en que posicion se
encuentra el mayor número.
Ejemplo si A es de 3x4:
2 0 2 1
2 1 5 3
2 3 5 5
entonces el mayor elemento (255) esta en la posicion 2
7 Se disponen de N temperaturas almacenadas en un array. Se desea calcular su media y obtener el
número de temperaturas mayores o iguales que la media.
8 Las notas de un colegio se tiene en una matriz de 30 X 5 elementos (30 número de alumnos y 5
número de asignaturas). Se desea listar las notas de cada alumno y su media. Cada alumno tiene
como mínimo 2 asignaturas y máximo cinco, aunque los alumnos no necesariamente todos tienen
que tener cinco materias.
9 Se desea realizar un algoritmo que permita controlar las reservas de plazas de un vuelo MADRIDCARACAS, de acuerdo con las siguientes normas de la compañía aérea.



Número de plazas del avión:300.
Plazas numeradas de 1 – 100 : Fumadores.
Plazas numeradas de 101 – 300 : No Fumadores.
Msc. Walter Fernandez Toglio.
10
C
CE
EN
NTTR
RO
OS
SU
UP
PE
ER
RIIO
OR
RS
SU
UP
PE
ER
RIIO
OR
RD
DE
EA
ALLTTA
A
E
S
P
E
C
I
A
L
I
Z
A
C
I
Ó
N
Y
A
S
E
S
O
R
Í
A
ESPECIALIZACIÓN Y ASESORÍA
http://www.cfape.com
P
PR
RO
OG
GR
RA
AM
MA
AC
CIIÓ
ÓN
NE
EN
N LLA
AP
PLLA
ATTA
AFFO
OR
RM
MA
AW
WIIN
ND
DO
OW
WS
S http://www.cfape.com/
P
P
R
O
G
R
A
M
A
C
Ó
N
E
N
C
C
N
V
E
B
Á
S
C
O
C
U
R
S
O
O
N
N
E
PR
RO
OG
GR
RA
AM
MA
AC
CIIIÓ
ÓN
NE
EN
NC
C///C
C++++++ N
NIIIV
VE
ELLL B
BÁ
ÁS
SIIIC
CO
O (((C
CU
UR
RS
SO
OO
ON
N---LLLIIIN
NE
E)))
Se debe realizar la reserva a petición del pasajero y cerrar la reserva cuando no haya plazas libres
o el avión este proximo a despegar. Como ampliación de este algoritmo, considere la opción de
anulaciones imprevistas de reservas.
Msc. Walter Fernandez Toglio.
11