Está en la página 1de 5

UNIVERSIDAD NACIONAL EXPERIMENTAL POLITÉCNICA

“ANTONIO JOSÉ DE SUCRE”


VICERECTORADO PUERTO ORDAZ
DEPARTAMENTO DE INGENIERÍA ELECTRÓNICA
SECCIÓN DE COMPUTACIÓN
ASIGNATURA: COMPUTACIÓN II

LABORATORIO 01.
REPASO DE ARREGLOS.

OBJETIVOS.
 Repasar el uso del IDE Borland C++ Builder 6 para la edición, depuración y compilación de
programas.
 Implementar programas utilizando arreglos unidimensionales y bidimensionales.
 Estudiar las operaciones básicas de estructuras de datos tipo arreglo.

PRE-REQUISITOS.
 Sintaxis básica de las instrucciones del lenguaje C++: declaración, entrada, salida,
asignación e instrucciones de control (estructuras de decisión y cíclicas).

BASE TEÓRICA.
1. Estructuras de Datos.

Las estructuras de datos, datos estructurados o tipo compuesto, son agrupaciones de otros
tipos de datos. En la siguiente tabla, se presenta una clasificación básica de las estructuras de
datos.

Según el almacenamiento de los datos en memoria:


Estructuras Contiguas: se almacenan en la Estructuras Enlazadas: se almacenan de forma
memoria de forma consecutiva. salteada.
Dependiendo de sí su tamaño permanece fijo o no durante la ejecución del programa:
Estructuras Dinámicas: su tamaño puede
Estructuras Estáticas: su tamaño permanece fijo alterarse durante la ejecución del programa.
a lo largo de la ejecución del programa. Normalmente las estructuras enlazadas son
siempre dinámicas.

1.1. Estructuras contiguas en C/C++: Arreglos y Cadenas de Caracteres.

Los arreglos (arrays) y las cadenas de caracteres (strings) son estructuras formadas por una
colección de datos, englobados bajo un mismo identificador (nombre) y se almacenan en memoria
en posiciones adyacentes, a los cuales se puede acceder de forma independiente.

2. Arreglos.

Un arreglo (llamados en inglés arrays) es una zona de almacenamiento contiguo, que


contiene una serie de elementos (datos) del mismo tipo relacionados bajo un mismo nombre.

Según las dimensiones de los arreglos, existen tres tipos:


Laboratorio 01. Repaso de Arreglos. Computación II. Semestre 2015-I.

Unidimensionales o Bidimensionales o
Multidimensionales
Vectores Matrices

2.1. Arreglos Unidimensionales o Vectores.

Los arreglos unidimensionales también conocidos como vectores, son un conjunto de datos
almacenados contiguamente en memoria y que están asociados a un mismo identificador. Para
declarar un arreglo unidimensional o vector se debe utilizar la siguiente sintaxis:

Pseudocódigo C++
Tipo_Dato Nombre_Arr[N] Tipo_Dato Nombre_Arr[N];

Donde N representa la cantidad de elementos que poseerá el vector.

2.2. Arreglos Bidimensionales o Matrices.

Se llaman matrices a los arreglos de dos dimensiones, es decir, a los arreglos cuyos elementos
vienen definidos por dos índices. Se puede visualizar su organización como una tabla o matriz,
donde cada elemento tiene asignado 2 índices: el primero representa la fila y el segundo la
columna. Para declarar una matriz se debe utilizar la siguiente sintaxis:

Pseudocódigo C++
Tipo_Dato Nombre_Arr[N, M] Tipo_Dato Nombre_Arr[N][M];

Donde N representa la cantidad de filas y M la cantidad de columnas que poseerá la estructura.

En este ejemplo se carga un arreglo con los números del 1 al 12 y luego se


Ejemplo 01.
muestran por pantalla.
#include <iostream.h>
#include <conio.h>
void main(void)
{
int t, i, N[3][4];
for(t=0;t<3;t++)
for(i=0;i<4;i++)
N[t][i]=(t*4)+i+1;
for(t=0;t<3;t++)
{ for(i=0;i<4;i++)
cout<<N[t][i]<<'\t'<<endl;
}
getch();
}
2
Laboratorio 01. Repaso de Arreglos. Computación II. Semestre 2015-I.
3. Cadenas de Caracteres.

Uno de los usos más comunes de los arreglos unidimensionales es la implementación como
cadenas de caracteres. En C/C++ una cadena se define como un arreglo de caracteres de
cualquier longitud que termina con un carácter nulo. El carácter nulo se especifica como '\0' y es
un cero, por lo tanto, se debe agregar un elemento al tamaño cuando se declaren. Así por ejemplo
si se desea declarar un arreglo que va a contener una cadena de 10 elementos , se debería
declarar char s[11], dejando sitio para el carácter de “fin de cadena”.

Aunque no existe un tipo de datos cadena, se pueden definir constantes de tipo cadena como una
cadena de caracteres encerrada entre comillas. En este caso no es necesario agregar el “fin de
cadena”, ya que C/C++ lo hace automáticamente.

C++ provee varias funciones que facilitan la manipulación de cadenas, en la siguiente tabla se
muestran algunas de las más importantes:

Función Descripción
strcpy(s1,s2); Copia una cadena s2 a otra cadena s1.
strlen(s1); Devuelve la longitud (bytes) de una cadena.
strcat(s1,s2); Concatena dos cadenas s1 y s2, y la cadena resultante queda en s1.
Compara dos cadenas. Devuelve 0 si son exactamente iguales (distingue
strcmp(s1,s2);
entre mayúsculas y minúsculas), >0 si s1>s2 y <0 si s1<s2.
Compara dos cadenas. Devuelve 0 si son iguales (no discrimina entre
strcmpi(s1,s2);
mayúsculas y minúsculas), >0 si s1>s2 y <0 si s1<s2.

El siguiente código muestra el uso de las funciones que manipulan cadenas de


Ejemplo 02. caracteres. El programa lee dos cadenas de caracteres, determina su longitud, las
compara y por último las concatena.
//Ejemplo 02
#include <iostream.h>
#include <conio.h>
#include <string.h>
void main(void)
{
char c1[80], c2[80];
cout<<"Cadena 1 = ";
cin>>c1;
cout<<"Cadena 2 = ";
cin>>c2;

cout<<"Longitud Cadena 1 = "<<strlen(c1)<<endl;


cout<<"Longitud Cadena 2 = "<<strlen(c2)<<endl;

if(!strcmp(c1,c2))
cout<<"Cadenas iguales"<<endl;

strcat(c1,c2);
cout<<"Concatenacion="<<c1;
}

3
Laboratorio 01. Repaso de Arreglos. Computación II. Semestre 2015-I.
3.1. Arreglos de Cadenas.

Para crear un arreglo de cadenas se debe usar un arreglo bidimensional. El índice izquierdo indica
el número de cadenas y el índice de la derecha indica la cantidad máxima de caracteres por
cadena. Un ejemplo de declaración sería:

char arr_cadenas[30][80];

Para acceder u operar a una cadena individual, solo hace falta especificar el índice izquierdo.

Ejemplo 03. El siguiente código lee una lista de 10 nombres y los muestra en pantalla.
#include <iostream.h>
#include <string.h>
void main(void)
{
int i;
char NOMBRE[10][20]; //Matriz de 10 nombres y máximo 20 caracteres/nombre
for (i=0; i<10; i++)
{ cout<<"Nombre("<<i<<") : ";
cin>>NOMBRE[i];
}
for (i=0 ;i<10 ;i++)
cout<<"Nombre("<<i<<")=" <<NOMBRE[i]<<endl;
}

4. Función Random.

La función random(n) arroja números aleatorios en el rango 0  n  n-1. En el caso de que se


necesiten llenar estructuras para efectuar las pruebas del programa, se puede usar la función
random para generar los valores.

El código que se muestra a continuación llena una matriz TEMP[10][10] con


Ejemplo 04.
valores enteros entre 0 y 40.
randomize(); // inicializa la función random
for(i=0;i<=9;i++)
for(j=0;j<=9;j++)
TEMP[i][j]=random(41);

4
Laboratorio 01. Repaso de Arreglos. Computación II. Semestre 2015-I.
LABORATORIO.
1. Ejercicio 01:

En el arreglo bidimensional (matriz) que se muestra abajo, se encuentran almacenadas las


cantidades de estudiantes por especialidad que han ingresado en los últimos 4 años en la
UNEXPO. Usted diseñará un algoritmo que mediante un menú de opciones permita:

1) Registrar los datos de estudiantes ingresados en la matriz Ingreso.


2) Visualizar los datos registrados de forma tabulada.
3) Totalizar la cantidad de alumnos ingresados por especialidad en los últimos 4 años y
determinar cuál fue la especialidad con mayor ingreso de alumnos.
4) Totalizar la cantidad de alumnos ingresados en cada año por especialidad y determinar cuál
fue el año con menor ingreso de alumnos.
5) Salir.
Ingreso [5][4]
Especialidades Semestres  2012 2013 2014 2015
 índices   0 1 2 3 TotalxEsp [5]
Eléctrica 0 35 40 45 40 Ʃ 160
Electrónica 1 50 45 50 45 Ʃ 185
Industrial 2 45 45 55 45 Ʃ 190
Mecánica 3 30 35 40 40 Ʃ 145
Metalúrgica 4 30 30 35 40 Ʃ 135
Esp[5][20] Ʃ Ʃ Ʃ Ʃ
TotalxAño [4] 190 195 225 205

Nota 1: utilice la función strcpy para asignarle los nombres de las especialidades al arreglo Esp.

Nota 2: Los datos mostrados en el esquema de arriba son solamente para ejemplo.

También podría gustarte