Sunteți pe pagina 1din 40

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

S-ar putea să vă placă și