INGENIERIA DE SISTEMAS
Arregos en C++
Arrays en C++
Arrays en C++
Arrays en C++
Arrays en C++
Dr. Jorge Mayhuasca Guerra
Lógica y Algoritmos
INGENIERIA DE SISTEMAS
Arreglos
• Un arreglo es un conjunto de variables del
mismo tipo que poseen un nombre común
concatenado a un índice.
• El índice permite acceder directamente a un
elemento particular de un arreglo.
• Los arreglos en lenguaje C se almacenan en
celdas de memoria contiguas.
• Pueden tener 1 o más dimensiones.
INGENIERIA DE SISTEMAS
Arreglos
• Los arreglos pueden tener una o varias
dimensiones.
Dr. Jorge Mayhuasca Guerra
INGENIERIA DE SISTEMAS
INGENIERIA DE SISTEMAS
Arreglos unidimensionales
• La forma general de declaracion:
tipo nombre_variable [tamaño];
• La cantidad de memoria en bytes se puede
obtener con la función:
numero_bytes = sizeof(tipo)*tamaño;
• El 0 es el índice del primer elemento de un arreglo.
Arrays
INGENIERIA DE SISTEMAS
• Índice de un arreglo
– Todo arreglo esta compuesto por un numero
de elementos.
– El índice es un numero correlativo que indica
la posición de un elemento del arreglo.
– Los índices en C++ van desde la posición 0
hasta la posición tamaño – 1.
Dr. Jorge Mayhuasca Guerra
Arrays
INGENIERIA DE SISTEMAS
• Elemento de un arreglo
– Un elemento de un arreglo es un valor
particular dentro de la estructura del arreglo.
– Para acceder a un elemento del arreglo es
necesario indicar la posición o índice dentro
del arreglo.
Ejemplo:
• arreglo[0] //Primer elemento del arreglo
• arreglo[3] //Cuarto elemento del arreglo
Dr. Jorge Mayhuasca Guerra
Ejemplo 1: Realizar un programa que cargue el arreglo base con
INGENIERIA DE SISTEMAS
los cuadrados de los números del 1 al 10 y luego los visualiza.
#include <iostream>
#include <conio.h>
• sqrs[0] = 1*1
int main()
• sqrs[1] = 2*2
{ • sqrs[2] = 3*3
int base[10]; • sqrs[3] = 4*4
int i; • sqrs[4] = 5*5
for (i=1;i<11;i++) { • sqrs[5] = 6*6
base[i-1]=i*i; • sqrs[6] = 7*7
} • sqrs[7] = 8*8
for (i=0;i<10;i++) { • sqrs[8] = 9*9
• sqrs[9] = 10*10
cout<<base[i]<<endl;
}
getche();
Dr. Jorge Mayhuasca Guerra
}
Asignación entre arreglos
Si desea copiar los valores de todos los elementos de una arreglo
INGENIERIA DE SISTEMAS
a otro debe hacerlo copiando cada elemento por separado
.
Ejemplo 2: Realizar un programa que cargue array1 con los
números del 1 al 10 y después los copie en array2.
#include <iostream>
#include <conio.h>
int main() {
int i, array1[10], array2[10];
for (i=0; i<10;i++) //Inicialización de array1
array1[i]=i+1;
for (i=0; i<10;i++) // Copiar en array2
array2[i]=array1[i];
for (i=0; i<10;i++) // Mostrar array2
cout<<array2[i]<<endl;
getche();
}
Ejemplo 3: Realize un programa que permita ingresar 10 numeros
INGENIERIA DE SISTEMAS
en un array y muestren como resultado la suma de sus elementos.
#include <iostream.h>
#include <conio.h>
int main(){
int x[10];
int i,suma;
cout<<"Ingrese 10 numeros enteros\n\n";
for (i=0;i<10;i++){
cout<< "Ingrese el valor No "<< i+1 <<": ";
cin>>x[i];
}
suma=0;
for (i=0;i<10;i++)
suma+=x[i];
cout <<"\nEl resultado de la suma es =" << suma << "\n";
getche();
}
Ejemplo 4: Realize un programa que lea la temperatura al
INGENIERIA DE SISTEMAS
mediodía, durante todos los días de un mes y luego informe la
temperatura promedio mensual así como el día mas caluroso y el
mas frio
#include <iostream>
#include <conio.h>
int main(){
int temp[31],min, max, media, dias;
cout<<"Cuantos días tiene el mes"<<endl;
cin>>dias;
for(int i=0;i<dias;i++){
cout<<"Introduzca la temperatura de mediodía del día"
<<i+1<<":"<<endl;
cin>>temp[i];
}
media=0; // Hallar la media
for(int i=0;i<dias;i++){
media=media+temp[i];
}
INGENIERIA DE SISTEMAS
cout<<"Temperatura media: "<<media/dias<<endl;
//Hallar min y max
// Temperatura mínima de la tierra es -90 Grados centígrados
min=60;
// Temperatura máxima de la tierra es 60 Grados centígrados
max=-90;
for(int i=0;i<dias;i++)
{
if(min>temp[i]) min=temp[i];
if(max<temp[i]) max=temp[i];
}
cout<<"Temperatura mínima: "<<min<<endl;
cout<<"Temperatura máxima: "<<max<<endl;
getche();
}
INGENIERIA DE SISTEMAS
CADENAS DE TEXTO
Vamos a ver cómo manejar TEXTO en C++, ya que hasta el
momento solo lo hemos mostrado por pantalla mediante la
sentencia cout y el operador de inserción << .
void main()
{
…
cout << “Esto es una cadena de texto”;
}
C++ no tiene como otros lenguajes de programación, un tipo de
datos básico para almacenar texto, como puede ser el tipo string.
C++ utilizará ARRAYS DE CARACTERES para almacenar texto.
Dr. Jorge Mayhuasca Guerra
Cadenas de Texto: Definición
INGENIERIA DE SISTEMAS
Una cadena de texto es una secuencia de caracteres. Ejemplos de
cadenas son:
“Ingeniería de Sistemas”
“Hola Mundo”
“Apolo 13”
En C++ una cadena se considera como un array de caracteres
terminado con el carácter nulo ‘\0’.
Dr. Jorge Mayhuasca Guerra
Diferencia entre Cadenas de Texto y arrays de caracteres
INGENIERIA DE SISTEMAS
La principal diferencia entre una cadena y un array de caracteres,
es que una cadena siempre termina con el carácter nulo ‘\0’ y los
arrays de caracteres no.
Como conclusión, podemos decir que
- Todas las cadenas de texto son arrays de caracteres,
- pero, no todos los arrays de caracteres almacenan cadenas.
Dr. Jorge Mayhuasca Guerra
Cadenas de Texto: Declaración
INGENIERIA DE SISTEMAS
Las cadenas de texto se declaran como se declaran los arrays de
caracteres, indicando el tamaño máximo de la cadena.
Sintaxis:
char <nombre_de_cadena> [ tamaño_máximo ];
Ojo: El tamaño de la cadena ha de incluir el carácter nulo ‘\0’.
Dr. Jorge Mayhuasca Guerra
Cadenas de Texto: Declaración
INGENIERIA DE SISTEMAS
Para declarar una cadena capaz de almacenar el texto “Apolo 13”
haremos lo siguiente:
Dr. Jorge Mayhuasca Guerra
Cadenas de Texto: Inicialización
INGENIERIA DE SISTEMAS
Las cadenas de caracteres no se pueden inicializar fuera de la
declaración.
Inicialización de cadenas en la declaración:
Dr. Jorge Mayhuasca Guerra
INGENIERIA DE SISTEMAS Cadenas de Texto: Ejemplos de Inicialización
char cad_uno[20] = “Hola Mundo”;
char cad_dos[20] = {‘H’,’o’,’l’,’a’,’ ‘,’M’,’u’,’n’,’d’,’o’ };
char cad_tres[20] = { “Hola Mundo”};
...
char saludo_uno[] = “Hola” ;
char saludo_dos[] = { “Hola”} ;
...
char saludo_tres[] = {‘H’, ‘o’, ‘l’, ‘a’};
...
cad uno = cad dos = cad tres =
Cadenas de Texto: Visualización de cadenas
INGENIERIA DE SISTEMAS
Para visualizar el contenido de una variable de tipo cadena en
consola o pantalla, utilizamos la sentencia de escritura cout con el
operador de inserción <<.
Dr. Jorge Mayhuasca Guerra
INGENIERIA DE SISTEMAS Cadenas de Texto: Ejemplos de Inicialización y visualización
#include <iostream.h>
#include <conio.h>
void main(){
char cad_uno[20] = "Hola Mundo";
char cad_dos[20] = {'H','o','l','a',' ','M','u','n','d','o' };
char cad_tres[20] = {"Hola Mundo"};
char saludo_uno[] = "Hola" ;
char saludo_dos[] = {"Hola"} ;
char saludo_tres[] = {'H','o','l','a',' ','M','u','n','d','o'};
cout<< cad_uno<<"\n";
cout<< cad_dos<<"\n";
cout<< cad_tres<<"\n";
cout<< saludo_uno<<"\n";
cout<< saludo_dos<<"\n";
cout<< saludo_tres<<"\n";
getche();
Dr. Jorge Mayhuasca Guerra
}
Cadenas de Texto: Ingreso de cadenas (Librería : stdio.h)
INGENIERIA DE SISTEMAS
Sintaxis:
gets : cadena
Sirve para ingresar una cadena desde teclado o archivo de
entrada. Lee hasta que encuentra un salto de línea.
Se llama a ésta función con el nombre de la variable donde
queremos guardar la cadena ingresada.
Dr. Jorge Mayhuasca Guerra
#include <iostream.h>
#include <conio.h>
INGENIERIA DE SISTEMAS
#include <stdio.h>
void main(){
char cad_uno[20];
char cad_dos[20];
char cad_tres[20];
cout<< "Ingrese el Primer texto : ";
gets(cad_uno);
cout<< "Ingrese el Segundo texto : ";
gets(cad_dos);
cout<< "Ingrese el Tercer texto : ";
gets(cad_tres);
cout<<"\nLos textos ingresados son: \n";
cout<< "Texto No 1: "<<cad_uno<<"\n";
cout<< "Texto No 2: "<<cad_dos<<"\n";
cout<< "Texto No 3: "<<cad_tres<<"\n";
getche();
Dr. Jorge Mayhuasca Guerra
}
Cadenas de Texto: Arrays de cadenas
INGENIERIA DE SISTEMAS
Para almacenar varios datos de tipo cadena en un array,
podemos hacerlo de la siguiente forma:
Ejemplo: Escriba un programa que permita ingresar el
apellido, nombre, edad y DNI de tres personas y mostrar
el resultado
Dr. Jorge Mayhuasca Guerra
#include <iostream.h>
#include <conio.h>
INGENIERIA DE SISTEMAS
void main(){
char apell[3][15], nom[3][20],dni[3][15];
int edad[3],f;
clrscr();
cout<<endl<<endl<<"\t\t PROGRAMA DE CARGA DE DATOS";
cout<<endl<<"\t\t =====================";
for(f=0;f<3;f++){
cout<<endl<<endl<<"Ingrese Apellido No "<<(f+1)<<" : ";
cin>>apell[f];
cout<<endl<<"Ingrese Nombre No "<<(f+1)<<" : ";
cin>>nom[f];
cout<<endl<<"Ingrese Edad No "<<(f+1)<<": ";
cin>>edad[f];
cout<<endl<<"Ingrese DNI No "<<(f+1)<<": ";
cin>>dni[f]; clrscr();
}
Dr. Jorge Mayhuasca Guerra
cout<<endl<<endl<<"Los datos ingresados fueron : ";
INGENIERIA DE SISTEMAS
for(f=0;f<3;f++){
cout<<endl<<endl<<"Apellidos No "<<(f+1)<<" : ";
cout<<apell[f];
cout<<endl<<endl<<"Nombre No "<<(f+1)<<" : ";
cout<<nom[f];
cout<<endl<<endl<<"Edad No "<<(f+1)<<" : ";
cout<<edad[f];
cout<<endl<<endl<<"DNI No "<<(f+1)<<" : ";
cout<<dni[f];
}getche();
}
Dr. Jorge Mayhuasca Guerra
Ejemplo: Escriba el programa anterior pero
INGENIERIA DE SISTEMAS
implementado con funciones.
Dr. Jorge Mayhuasca Guerra
#include <iostream.h>
#include <conio.h>
INGENIERIA DE SISTEMAS
void DatosCli(); // Prototipo de funcion
void main(){
clrscr();
cout<<endl<<endl<<"\t\t PROGRAMA DE CARGA DE
DATOS";
cout<<endl<<"\t\t =====================";
DatosCli(); //Llamada a la funcion
getch();
}
void DatosCli(){ //implementacion de la funcion datosCli()
char apell[3][15], nom[3][20],dni[3][15];
int edad[3],f,c;
for(f=0;f<3;f++){
cout<<endl<<endl<<"Ingrese Apellido No "<<f+1<<" : ";
cin>>apell[f];
cout<<endl<<"Ingrese Nombre No "<<f+1<<" : ";
cin>>nom[f];
cout<<endl<<"Ingrese Edad No "<<f+1<<": ";
INGENIERIA DE SISTEMAS
cin>>edad[f];
cout<<endl<<"Ingrese DNI No "<<f+1<<": ";
cin>>dni[f]; clrscr();
}
cout<<endl<<endl<<"Los datos ingresados fueron : ";
for(f=0;f<3;f++){
cout<<endl<<endl<<"Apellidos No "<<f+1<<" : ";
cout<<apell[f];
cout<<endl<<endl<<"Nombre No "<<f+1<<" : ";
cout<<nom[f];
cout<<endl<<endl<<"Edad No "<<f+1<<" : ";
cout<<edad[f];
cout<<endl<<endl<<"DNI No "<<f+1<<" : ";
cout<<dni[f];
}
}
Dr. Jorge Mayhuasca Guerra
ARREGLOS MULTIDIMENCIONALES
INGENIERIA DE SISTEMAS
Es una estructura de datos estática y de un mismo tipo de
datos, y de longitud fija que almacena datos de forma matricial.
Los arreglos multidimensionales son también conocidos como
matrices.
Declaración de arreglos multidimensionales
La sintaxis es la siguiente:
• tipo_dato identificador [dimensión1] [dimensión2] ...
[dimensiónN] ; Donde N es un número natural positivo.
Ejemplo Arreglo de dos dimensiones de orden 2x3.
• char m[2][3] ;
Dr. Jorge Mayhuasca Guerra
Ejemplo . Escriba un programa que llene un arreglo de enteros de
dimension 3x2.
INGENIERIA DE SISTEMAS
#include <iostream>
#include <conio.h>
void main() {
int matriz [3][2]; int valor;
for(int i=0;i<3;i++) { // Recorre las filas de la matriz
for(int j=0; j<2;j++) { // Recorre las columnas de la matriz
cout<<"Ingrese el valor de la matriz en la posicion ["<<i<<","<<j<<"]"<<endl;
cin>>valor;
matriz[i][j] = valor; } }
for(int i=0;i<3;i++) { // Imprimiendo el arreglo en formato matricial
cout<<"|";
for(int j=0; j<2;j++) {
cout<<"\t"<<matriz[i][j]<<"\t"; }
cout<<"|"<<endl; }
getche(); }
Dr. Jorge Mayhuasca Guerra
INGENIERIA DE SISTEMAS
Algunas operaciones con arreglos
Ejemplo de llenado de dos arreglos multidensionales de
orden 3x2.
La matriz A se llena con valores de un contador que va
desde 0 a hasta 9.
La matriz B se llena con un acumulador que inicia desde 10
y va incrementado y almacenando su valor a razon de 3.
Adicionalmente se utiliza una opcion para indicar al usuario
si desea continuar trabajando en el programa
Dr. Jorge Mayhuasca Guerra
#include <iostream.h>
#include <string.h>
INGENIERIA DE SISTEMAS
#include <conio.h>
#include <stdio.h>
#include <ctype.h>
int main() {
int matriz_A [3][2],matriz_B [3][2]; char opcion[2];
int valores_A=0, valores_B=10; int comparacion=0;
cout<<"Bienvenido al programa de Cadenas Multidimensionales (Presione
Enter)"<<endl;
getchar();
do {
valores_A=0, valores_B=10;
for(int i=0;i<3;i++) { // Recorre las filas de la matriz
for(int j=0; j<2;j++) { // Recorre las columnas de la matriz
matriz_A[i][j] = valores_A; // Asignación de valores_A al elemento matriz_A[i][j]
valores_A = valores_A+1;// Incremento de la variable en 1
matriz_B[i][j] = valores_B;// Asignación de valores_B al elemento matriz_B[i][j]
valores_B = valores_B+3; } }// Incremento de la variable en 3
// Imprimiendo el arreglo A en formato matricial
INGENIERIA DE SISTEMAS
cout<<"Matriz A "<<endl;
for(int i=0;i<3;i++)
{
cout<<"|";
for(int j=0; j<2;j++)
{
cout<<"\t"<<matriz_A[i][j]<<"\t";
}
cout<<"|"<<endl;
}
// Imprimiendo el arreglo B en formato matricial
cout<<"Matriz B "<<endl;
for(int i=0;i<3;i++)
{
Dr. Jorge Mayhuasca Guerra
cout<<"|";
INGENIERIA DE SISTEMAS
for(int j=0; j<2;j++)
{
cout<<"\t"<<matriz_B[i][j]<<"\t";
}
cout<<"|"<<endl;
}
cout<<"Para continuar el programa presione Si, para salir No: "<<endl;
gets(opcion);
// Transformación de cadena a mayusculas
int tamano =strlen(opcion);
for(int i=0;i<tamano;i++)
opcion[i]= toupper(opcion[i]);
comparacion = strcmp(opcion,"SI");
}while(comparacion==0);
cout<<"Fin"<<endl;
getche();
} Dr. Jorge Mayhuasca Guerra
#include <iostream>
#include <conio.h>
INGENIERIA DE SISTEMAS
#include <stdio.h>
int main() {
int cant_estud = 5;
char nombres[5][30], apellidos[5][30];
cout << "\t\tPrograma de demostración de arreglos de cadenas" << endl;
for( int i=0;i<cant_estud;i++) {
cout<<"Estudiante "<<i+1<<": "<<endl;
cout<<"Ingrese el Nombre: ";
gets(nombres[i]);
cout<<"Ingrese el Apellido : ";
gets(apellidos[i]);
cout<<" "<<endl; }
cout << "\t\tCarga realizada..." << endl;
for( int i=0;i<cant_estud;i++) {
cout<<"Estudiante "<<i+1<<" es : "<<nombres[i]<<" "<<apellidos[i]<<endl; }
getche(); }
Ejemplo: Suponga que debe construir un
INGENIERIA DE SISTEMAS
programa para registrar los tiempos de los
chequeos de 4 velocistas que compiten para un
cupo en la clasificación nacional.
Cada velocista corre por un carril, y se deben
realizar 3 chequeos por cada velocista.
Usted debe registrar el nombre del velocista que
corre por cada canal, registrar el tiempo de cada
prueba y su tiempo promedio.
Tome en cuenta que el nombre de tiene una
longitud de máximo 40 caracteres.
INGENIERIA DE SISTEMAS
#include <iostream>
#include <conio.h>
#include <stdio.h>
INGENIERIA DE SISTEMAS
int main(){
char competidores [4][40]; /*Matriz de nombres de competidores*/
float carreras[4][3]; /*Matriz de tiempos en cada vuelta de los
competidores*/
float prom_competidores[4]; /*Vector de tiempos promedio de los
competidores*/
float acumulador=0;
cout << "Información del tiempo de cada competidor en el
chequeo" << endl;
/*Llenando el vector de nombres de participantes*/
for (int i=0;i<4;i++) {
cout<<"Ingrese el nombre del competidor del carril "<<i+1<<endl;
gets(competidores [i]); }
/*Llenando la matriz de tiempos en cada chequeo*/
for (int j=0;j<4;j++) {
acumulador=0;
cout<<"Indique el tiempo del Competidor
INGENIERIA DE SISTEMAS
"<<competidores[j]<<endl;
for(int k=0;k<3;k++) {
cout<<"En la prueba "<<k+1<<endl;
cin>>carreras[j][k];
acumulador=acumulador+carreras[j][k]; }
/*Guardando el promedio de las dos carreras en el vector*/
prom_competidores[j]=acumulador/3; }
/*Imprimiendo los resultados*/
for (int j=0;j<4;j++) {
cout<<"El tiempo del Competidor "<<competidores[j];
for(int k=0;k<3;k++) {
cout<<"\t"<<carreras[j][k]; }
cout<<"\tTiempo promedio= "<<prom_competidores[j]<<endl; }
getche();
}
Dr. Jorge Mayhuasca Guerra