Está en la página 1de 60

ARREGLOS 1

ARREGLOS

Diana C. Navarro Espinoza

Alexander A. Bernedo Jurado

Universidad Nacional Mayor de San Marcos

Prof. Frank Escobedo Bailon

25 de Noviembre de 2014
ARREGLOS 2

Introducción

Un arreglo es un conjunto de variables que son del mismo tipo de datos. A cada

parte de un arreglo se le denomina “elemento”. Los cuales se hacen referencia con el

mismo nombre y se almacenan en posiciones consecutivas.

ARREGLOS UNIDIMENSIONALES

Introducción

Los arreglos unidimensionales, también llamados listas, tienen un solo subíndice.

Son datos estructurados de una colección finita y ordenada de datos del mismo tipo.

Cada ítem del arreglo se denomina elemento, si el nombre del arreglo es b, el primer

elemento seria b[0] y si tiene n elementos se denominaría b[0] b[1] b[2]… b[n-1] .

Para manejar un arreglo, las operaciones a efectuarse son:

 Declaración del arreglo,

 Creación del arreglo,

 Inicialización de los elementos del arreglo, y

 Acceso a los elementos del arreglo.

Declaración de los arreglos unidimensionales

Los arreglos unidimensionales se declaran de manera similar a otro tipo de datos,

solo que este debe indicar al compilador el tamaño y la longitud del arreglo. Consiste en

establecer las características del arreglo. La sintaxis de la declaración del arreglo es:
ARREGLOS 3

tiponombre_arreglo[tamaño];

Tipo: declara el tipo de base del arreglo que es el tipo de cada elemento del mismo

Nombre_arreglo: es el nombre del arreglo

Tamaño: es el número de elementos del arreglo

Apuntadores y arreglos

Existe una corta relación entre apuntadores y arreglos. Una variable de tipo arreglo

puede considerarse como una apuntadora de tipo arreglo. Los apuntadores pueden ser

usados en cualquier operación de involucre subíndices de arreglos.

Ejemplo:

main()

{ int tabla[10],i,x,*pt,*ptr;

pt=&tabla[0];

x=*pt;

for(i=0; i!10;i++)

*(pt+i)=random();

ptr=tabla;

for (i=0; i!10;i++)


ARREGLOS 4

printf(“%d nn”,*(ptr+i),tabla[i];

Cuando se suma 1 a un apuntador el incremento se adecua al tamaño en la memoria

del objeto apuntado. Un apuntador es una variable, por lo que operaciones como pa =a y

pa++ son aceptadas. Un nombre de un arreglo es una constante, no una variable, de ahí

que a= pao a++ o p=a.

Arreglos de apuntadores

Los arreglos también pueden contener apuntadores. Se usa más cuando formamos

cadenas de caracteres. Cada entrada en el arreglo es un apuntador al primer carácter de

la cadena.

Declaración:

char * nombres[4] = {“Carmen”, “Ana”, “Maria”, “Flor”}

Las cadenas no están situadas en el arreglo, ahí tan solo están almacenados los

apuntadores. A pesar de que los arreglos, como explicamos anteriormente, tienen

tamaño finito, permite el acceso a cadenas de cualquier tamaño.

Ejemplo: Ordenar las líneas de un texto de diferente longitud

 Primero se deben guardar todas las líneas en un arreglo de tipo char grande.

Observando que \n marca el fin de cada línea. Ver figura 1.1.

 Guardar los apuntadores en un arreglo diferente donde cada apuntador apunta al

primer caracter de cada línea.


ARREGLOS 5

 Comparar dos líneas usando la función de la biblioteca estándar strcmp().

 Si dos líneas están desacomodadas -- intercambiar (swap) los apuntadores (no el

texto).

Figura 1.1: Arreglos de apuntadores (Ejemplo de ordenamiento de cadenas).

Con lo anterior se elimina el manejo complicado del almacenamiento y alta sobrecarga

por el movimiento de líneas.

Arreglos y funciones

Usamos arreglos como argumento a la función, se pasa sólo la dirección del arreglo y

no la copia del arreglo entero. Para fines prácticos podemos considerar el nombre del

arreglo sin ningún índice como la dirección del arreglo.

Considerar el siguiente ejemplo en donde se pasa un arreglo a la función imp_rev,

observar que no es necesario especificar la dimensión del arreglo cuando es un

parámetro de la función.
ARREGLOS 6

void imp_rev(char s[])

int t;

for( t=strlen(s)-1; t>=0; t--)

printf("%c",s[t]);

main()

char nombre[]="Facultad";

imp_rev(nombre);

Observar que en la función imp_rev se usa la función strlen para calcular la longitud

de la cadena sin incluir el terminador nulo. Por otra parte, la función imp_rev no usa la

sentencia return ni para terminar de usar la función, ni para regresar algún valor.

Se muestra otro ejemplo,

float enconprom(int tam, float lista[])

{ int i;

float suma = 0.0;

for ( i=0; i<tam; i++)

suma += lista[i];

return(suma/tam);

}
ARREGLOS 7

main()

float numeros[]={2.3, 8.0, 15.0, 20.2, 44.01, -3.0, -2.9};

printf("El promedio de la lista es %f\n", enconprom(7,numeros) );

Ejercicios Desarrollados

1. Escribir un programa que tiene un arreglo con los números comprendidos entre

4 y 14.

#include<iostream>

#include<stdlib.h>

using namespace std;

int main(int argc, char *argv[ ])

{ int a[11];

int n=4;

for (int i=0; i<1; i++)

{ a[ i ] = n++;

cout<< a[ i ]<<endl;

system(“PAUSE”);

return 0;

}
ARREGLOS 8

2. Escribir un programa que llene un arreglo con los números pares comprendidos

entre 1 y 100.

#include<iostream>

#include<stdlib.h>

using namespace std;

int main( int argc, char *argv[ ])

{ int a[100];

int n=1, acum=0;

cout<<”Los números pares menores que cien: “<<endl;

for( int i=0; i<100; i++)

{ a[ i ] = n++;

if( a[ i ]%2 == 0)

{ cout<<a[ i ]<<endl;

system(“PAUSE”);

return 0;

3. Escribir un programa que llene un arreglo con los números comprendidos entre

0 y 99 divisibles por 3.

#include<iostream>

#include<stdlib.h>

using namespace std;

int main( int argc, char *argv[ ])

{ int x=0, y=0;


ARREGLOS 9

int m[33];

do{

if( x%3==0 && x!=100){

m[y++]=x;

} while (x++<100);

for (y=0; y<33; y++){

cout<< m[y] <<endl;

system(“PAUSE”);

return 0;

4. Escribir un programa que llene un arreglo con cinco números enteros

consecutivos y haga una copia de ese arreglo en otro.

#include<iostream>

#include<stdlib.h>

using namespace std;

int main( int argc, char *argv[ ])

{ int arraya[5];

int j, n=5;

cout<<”Arreglo original: ”<<endl;

for(j=0; j<5; j++)

{ arraya[ j ]=n++;

cout<<arraya[ j ]<<endl;

}
ARREGLOS 10

cout<<”La copia del arreglo original:”<<endl;

for( j=0; j<5; j++)

{ int *p =&arraya[ j ];

cout<<*p<<endl;

system(“PAUSE”);

return 0;

5. Escribir un programa que llene un arreglo de 10 números enteros aleatorios

comprendidos entre 50 y 100, copie en otro arreglo esos números multiplicados

por 0,5 y muestre ambos arreglos.

#include<iostream>

#include<ctime>

using namespace std;

int main()

{ int o[10];

float c[10];

srand(time(0));

for ( int i=0; i<10; i++ )

{ o[ i ] =50 + (rand()%51);

for(int i=0; i<10; i++)

{ c[ i ] =o[ i ]*0.5;

for(int i=0; i<10; i++)


ARREGLOS 11

{cout<< o[ i ] <<”\t” << c[ i ] <<endl;

system(“PAUSE”);

return 0;

6. Escribir un programa que llene un arreglo con los veinte primeros números pares

y calcule su suma.

#include<iostream>

#include<stdlib.h>

using namespace std;

int main( int argc, char *argv[ ])

{ int a[40];

int n=1;

cout<<”Suma de los primeros veinte números pares: ”<<endl;

cout<<”Los veinte primeros pares: “<<endl;

for(int i=0; i=40; i++)

{ a[ i ]=n++;

if(a[ i ]%2==0)

{ cout<<a[ i ]<<endl;

acum+= a[ i ];

cout<< “suma: “<<endl;

system(“PAUSE”);

return 0;
ARREGLOS 12

7. Escribir un programa que solicite cinco números, los almacene en un arreglo y

luego calcule la media aritmética de esos números.

#include<iostream>

#include<stdlib.h>

#include<math.h>

int main( )

{ int a[5];

int j, acum=0;

double media;

cout<<”Media aritmeticade 5 numeros \n\n”;

for( j=0; j<5; j++)

{ cout<<”Ingrese un numero\n\n”;

cin>>a[ j ];

acum+=a[ j ];

media= acum/5;

cout<<”La media aritmética es : \n\n”<<media;

system(“PAUSE”);

return 0;

8. Escribir un programa que tras asignar los números, -2, 5, 8, -9, 10, 15 y –4 a un

arreglo calcule, independientemente, la suma de los elementos positivos y

negativos.
ARREGLOS 13

#include<iostream>

#include<stdlib.h>

using namespace std;

const int TAM=10;

int main( int argc, char *argv[ ])

{ int arc(TAM);

int acum1=0; acum2=0;

for (int i=0; i<TAM; i++)

{ cout <<”ingrese un numero”<<endl;

cin>>arr[ i ];

for ( int i=0; i<TAM; i++)

{ if (arr[ i ]>0)

acum1+=arr[ i ];

for (int i=0; i<TAM;i++)

{ if (arr[ i ]<0)

acum2+=arr[ i ];

cout<<”positivos: ”<<acum1<<endl;

cout<<”negativos: “<<acum2<<endl;

system(“PAUSE”);

return 0;

}
ARREGLOS 14

9. Escribir un programa que almacene en un arreglo los números primos

comprendidos entre 1 y 100.

#include<iostream>

#include<stdlib.h>

using namespace std;

const int T=100;

int main( int argc, char *argv[ ])

{ int arr[T];

int modulo, cont, x=1;

cout<<”Numeros primos entre 1 y 100”<<endl<<endl;

for(int n=0; n<T; n++)

{ arr[ n ]=x++

cout<<endl;

for (int n=0; n<T; n++)

{ cont=0;

for(int i=1; i<*arr[ a ]; i++)

{ modulo=arr[ n ]%1;

if(modulo==0)

{ cont= cont+1;

if(cont<=2)

cout<<arr[ n ]<<endl;

}
ARREGLOS 15

system(“PAUSE”);

return 0;

10. Escribir un programa que genera la inversa de una cadena de caracteres. La

cadena original y la invertida deben almacenarse en arreglos independientes.

#include<iostream>

#include<stdlib.h>

using namespace std;

int main( int argc, char *argv[ ])

{ char cad[30];

char cadinv[30];

cout<<”Inversion de cadena de caracteres”<<endl<<endl;

cout<<”Ingrese una palabra o frase”<<endl;

cin.getline (cad,30);

cout<<endl;

cout<<”Cadena inversa”<<endl;

cout<<strrev(cad);

cout<<endl;

system(“PAUSE”);

return 0;

11. Escribir un programa que cuente las mayúsculas de una cadena de caracteres.

#include<iostream>

#include<cstdio>

using namespace std;


ARREGLOS 16

int main();

char cad[30];

int cont=0;

for(int i=0; i<10; i++)

{ cad[ i ]=’\0’;

cout<<”Ingrese una cadena de texto:”<<endl;

cin.getline(cad,30);

for(int i=0; i<30; i++)

{ if( isupper(cad[ i ] ) )

{ cont++;

cout<<”La cadena : “<<cad<<”tiene “<<cont<<”mayúsculas ”<<endl;

system(“PAUSE”);

return 0;

12. Escribir un programa que encripte los caracteres de una cadena sumando 2 a los

que situados en posiciones pares y 3 a los situados en posiciones impares.

#include<iostream>

#include<stdlib.h>

using namespace std;

int main( int argc, char *argv[ ])

{ char cad[30];
ARREGLOS 17

char cop[30];

for (int i=0; i<30; i++)

{ cad[ i ]=’\0’;

cop[ i ]=’\0’;

cout<<”Ingrese una cadena de texto: ”;

cin.getline( cad,30 );

for ( int i=0; i<30; i++ )

{ if ( cad[ i ]! = ’\0’)

{ if( i%2==0)

{ cop[ i ]=cad[ i ]+2;

else

{ cop[ i ]=cad[ i ]+3;

cout<<”La cadena: “<<cad<<endl;

cout<<”Fue encriptada en: “<<cop<<endl;

system(“PAUSE”);

return 0;

13. Decir el número de vocales que aparecen en una frase introducida por el usuario.

#include<iostream>
ARREGLOS 18

#include<stdlib.h>

using namespace std;

int main( int argc, char *argv[ ])

{ char cad[30];

for( int i=0; i<30; i++)

{ cad[ i ]=’\0’;

cout<<”Ingrese una cadena de texto: “;

cin.getline(cad,30);

cout<<endl<<endl;

int cont=0;

for ( int i=0; i<30;i++)

{ if ( cad[ i ]==’a’ ││ ( cad[ i ]==’e’ ││ ( cad[ i ]==’i’ ││ ( cad[ i ]==’o’ ││ (

cad[ i ]==’u’

cont++;

cout<<”En la cadena “<<cad<<” hay “<<cont<<“ vocales “<<endl;

system(“PAUSE”);

return 0;

14. Escribir un programa que lea una frase introducida desde el teclado y la escriba

al revés.

#include<iostream>
ARREGLOS 19

#include<stdlib.h>

using namespace std;

int main( int argc, char *argv[ ])

{ char cad[30];

cout<<”Frase invertida”<<endl;

for( int i=0; i<30; i++)

{ cad[ i ]=’\0’;

cout<<”Ingrese la frase: “;

cin.getline(cad,30);

cout<<”La frase invertida: “<<endl;

cout<< strrev(cad);

cout<<endl;

system(“PAUSE”);

return 0;

15. Escribir un programa que compare dos arreglos de caracteres y nos diga si son

idénticos o no.

#include<iostream>

#include<stdlib.h>

using namespace std;

int main( int argc, char *argv[ ])

{ char cad1[30];

char cad2[30];

for( int i=0; i<30; i++)


ARREGLOS 20

{ cad1[ i ]=’\0’;

cad2[ i ]=’\0’;

cout<<”Ingrese la cadena de texto 1: “<<endl<<endl;

cin.getline(cad1,30);

cout<<”Ingrese la cadena de texto 2: “<<endl<<endl;

cin.getline(cad2,30);

int igual=0;

for( int i=0; i<30; i++)

{ if ( strcrp( cad1,cad2 )==0 )

{ igual=2

if ( igual==1 )

cout<<”La cadena “<<cad1<<” y la cadena “<<cad2<<” son

idénticas”<<endl;

if ( igual==0 )

cout<<” Las cadenas no son identicas”<<endl;

system(“PAUSE”);

return 0;

16. Escribir un programa que encripte una cadena de caracteres sumando 2 al código

ASCII de cada uno de sus caracteres.


ARREGLOS 21

#include<iostream>

#include<stdlib.h>

using namespace std;

int main( int argc, char *argv[ ])

{ char cad1[30];

char cad_con[30];

for( int i=0; i<30; i++)

{ cad1[ i ]=’\0’;

cad_con[ i ]=’\0’;

cout<<”Cadena encriptada sumando dos a cada caracter ”<<endl<<endl;

cout<<”Ingrese una cadena de texto:”;

cin.getline(cad1,30);

cout<<endl<<endl;

cout<<”Cadena encriptada: “<<endl<<endl;

for( int i=0; i<30; i++)

{ if (cad[ i ]!=’\0’;

{ cad_con[ i ]= cad[ i ]+2;

cout<< cad_con[ i ];

cout<<endl<<endl;

system(“PAUSE”);

return 0;

}
ARREGLOS 22

17. Realizar un programa que lea la temperatura al medio día, durante todos los días

de un mes y luego informar la temperatura promedio mensual, así como el día

más caluroso y el día más frío.

#include<iostream>

usingnamespace std;

int main()

{ int temp[31], min, max, media;

int dias;

cout<<”Cuantos dias tiene el mes ”<<endl;

cin>>dias;

for( i=0; i<dias; i++){

cout<<”Introduzca la temperatura de mediodia del dia ”<<i+1<<”:”<<endl;

cin>>temp[ i ];

media=0;

for( i=0; i<dias; i++){

media= media+ temp[ i ];

cout<<”Temperatura media: ”<<media/dias<<endl;

min=60;

max=-90;

for( i=0; i<dias; i++){

if ( min>temp[ i ])min=temp[ i ];

if ( max<temp[ i ])max=temp[ i ];

}
ARREGLOS 23

cout<<”Temperatura minima: “<<min<<endl;

cout<<”Temperatura maxima: “<<max<<endl;

return 0;

18. Hacer un programa que calcule el valor numérico de un polinomio de grado N

cuyos coeficientes, grado y valor de x son ingresados con teclado. Considere un

grado máximo de 99.

#include<iostream.h>

#include<conio.h>

#include<math.h>

const int N = 100;

void main()

int G,i;

double Poli[100], X, VN;

cout<<"Ingrese el grado del polinomio : ";

cin>>G;

cout<<"Ingrese el valor de X = ";

cin>>X;

cout<<"Ingrese los coeficientes del polinomio: "<<endl;

for(i=0;i<G+1;i=i+1)

cout<<"Poli[ "<<i<<"] = ";

cin>>Poli[i];

}
ARREGLOS 24

VN = 0;

for(i=0;i<G+1;i=i+1)

VN = VN + Poli[i] * pow(X,i) ;

cout<<"Valor numerico = "<<VN<<endl;

getch();

19. Hacer un programa que lea los nombres, edades y tallas de N atletas. N es

declarado como constante. Trabaje con 10 atletas .El programa debe calcular:

a) El promedio de las edades y de las tallas.

b) Determinar cuántos atletas son menores de edad (menores de 18 años) y

cuantos atletas son mayores de edad.

c) Determinar los nombres de los atletas que son más altos que el promedio.

#include<iostream.h>

#include<conio.h>

#include<stdio.h>

#include<iomanip.h>

const int N = 3;

void main()

char Nom[N][25];

int Edad[N], i, CanMenEdad, CanMayEdad, SumEdad;

double Talla[N], PromTalla, SumTalla, PromEdad;

for(i=0;i<N;i=i+1)
ARREGLOS 25

gets(Nom[i]);

cin>>Edad[i];

cin>>Talla[i];

SumEdad = 0;

SumTalla = 0;

for(i=0;i<N;i=i+1)

SumEdad=SumEdad+Edad[i];

SumTalla = SumTalla + Talla[i];

PromEdad = SumEdad/N;

PromTalla = SumTalla/N;

CanMenEdad = 0;

CanMayEdad = 0;

for(i=0;i<N;i=i+1)

if ( Edad[i] < 18 )

{ CanMenEdad = CanMenEdad + 1; }

else

{ CanMayEdad = CanMayEdad + 1; }

for(i=0;i<N;i=i+1)

{
ARREGLOS 26

cout<<setw(25)<<Nom[i]<<setw(10)<<Edad[i]<<setw(10)<<Talla[i]<<endl;

cout<<setw(35)<<PromEdad<<setw(10)<<PromTalla<<endl;

cout<<"Numero de atletas menores de edad : "<<CanMenEdad<<endl;

cout<<"Numero de atletas mayores de edad : "<<CanMayEdad<<endl;

cout<<"Los atletas mas altos al promedio son: "<<endl;

for(i=0;i<N;i=i+1)

if(Talla[i] > PromTalla)

cout<<Nom[i]<<endl;

getch();

20. Hacer un programa que inicialice nombre, dirección y teléfono de 5 amigos y

muestre datos de uno de ellos, si se ingresa por teclado el índice del arreglo.

Debe mostrar repetidamente los datos de un amigo. Hacerlo hasta que se ingrese

por teclado un índice fuera del rango (0-4).

#include<iostream.h>

#include<conio.h>

#include<iomanip.h>

void main()

char nomb[5][30] = {"Ada Lugo","Alberto C.", "Jorge B.", "Andre F.",

"Miura F."};

char direc[5][30] = {"Av.Los Naranjos 120", "Av,Sucre 115", "Av. Lima


ARREGLOS 27

1230", "Jr. Cuzco 130","Av. La Paz 340"};

char telef[5][10] = {"5423450","5257820", "2345678", "4567213",

"3124567"};

int i;

cout<<setw(30)<<"NOMBRE:"<<setw(30)<< "DIRECCION:" << setw(10)

<<"TELEFONO:" <<endl;

for (i=0; i<= 4; i=i+1)

{ cout<<setw(30)<<nomb[i]<<setw(30)<<direc[i]<<setw(10) <<telef[i] <<

endl; } cout<<"Ingrese el indice ";

cin>>i;

while ((i>=0) && (i<5))

{ cout<<setw(30)<<nomb[i]<<setw(30)<<direc[i]<< setw(10) << telef[i]

<<endl;

cout<<"ingrese el indice : ";

cin>>i;

getch();

Ejercicios Propuestos

1. Dado dos vectores A y B de 15 elementos cada uno obtener un vector C

donde la posición i se almacena la suma de A[i] + B[i] y mostrar el mayor

de los C[i].
ARREGLOS 28

2. Escriba un programa que determine si una palabra es palíndromo. Un

palíndromo es un array de caracteres que se lee de igual forma en ambos

sentidos; por ejemplo ana.

3. Escribir un programa en el que se genere aleatoriamente un vector de 20

números enteros. El vector ha de quedar de tal forma que la suma de los 10

primeros elementos sea mayor que la suma de los 10 últimos elementos.

Mostrar el vector original.

4. Hacer un programa que permita ordenar alfabéticamente una lista de

nombres de tamaño N considerado constante. El tamaño máximo de las

cadenas considérela 20.

5. Escribir un programa, que lea una lista de números enteros positivos y los

muestre en pantalla. Luego, si hay números repetidos, deben eliminarse de la

lista y dejar sólo uno de cada número e imprimir la nueva lista.

6. Una librería que comercializa 5 productos diversos, maneja los siguientes

arrays:

- cosUni que guarda el Precio costo de cada producto

- preUni que guarda el Precio venta de cada producto

- UnidVend que guarda las unidades vendidas en un mes

Hacer un programa que permita calcular:

a) El monto de dinero invertido,

b) El monto de la venta, la ganancia en cada producto y la ganancia total

7. Sea Par un arreglo de enteros de tamaño 10, realice un programa que

cargue de forma automática números de pares en cada una de sus posiciones.

8. Sea Impar un arreglo de enteros de tamaño 10, realice un programa que

cargue de forma automática números impares en cada una de sus posiciones.


ARREGLOS 29

9. Hacer un programa que calcule la nota de un alumno en una prueba 10

preguntas de opciones múltiples ('a',...o,'e'). Cada pregunta se evalúa con dos

puntos. Debe inicializa un arreglo con las respuestas correctas. El programa

debe mostrar el nombre, el arreglo de respuestas correctas y el arreglo de

respuestas del alumno y la nota del alumno.

10. Programa que llene un arreglo de 5 Números, que pida al usuario

números enteros y que multiplique los números introducidos por 2, y esos

números introducidos, los imprima en pantalla. De ser posible que imprima

primero los números introducidos y luego esos números pero ya

multiplicados.

11. Sea Par_Impar un arreglo de enteros de tamaño 10, realice un programa

cargue de forma automática números pares en las posiciones que sean pares

e impares donde las posiciones sean impares.

12. Sea un vector A de 5 elementos realice las siguientes operaciones.

• Los elementos del vector deben ser números negativos pares.

• Determine cuál es el mayor elemento del vector (may_A).

• Determine cuál es el menor elemento del vector (men_B).

13. Desarrolle un programa que realice la siguiente operación. Se tienen dos

vectores de 5 elementos numéricos cada uno, realizar la resta del Vector A

menos el Vector B y almacenar el resultado en un Vector C (C = A -B),

determinar el promedio de la suma de los elementos del Vector C (prom_C).

14. Continuando el ejercicio anterior, multiplique los valores que se

encuentren en las posiciones impares del vector A (mult_impar_A), realice

lo mismo para el vector C (mult_impar_B), determine cuál de los 2 valores

es mayor.
ARREGLOS 30

15. Llenar un Vector A de 6 elementos numéricos y determinar suma de

todos sus elementos, promedio de los elementos y cuantos elementos están

por encima del promedio. Realice la mismas operación para el Vector B =

4A. Imprima el promedio de A y de B, indique cual es el mayor de los

promedios.

16. Tiene 3 Vectores de 4 elementos numéricos cada uno, realice la suma del

Vector A, B y C y guarde el resultado en un Vector D. Sobre el Vector

resultante D sume en la posición 3 del Vector el valor numérico 10. En la

primera posición del vector A sume el valor numérico 7, realice la misma

operación para el vector B. Determine cuál es el mayor elemento en la

posición 0 entre los vectores A y B.

17. Dado dos Vectores A y B de 7 elementos numéricos cada uno realice la

siguiente operación. Llene el Vector A con números pares comprendidos en

el intervalo 100 a 120. El Vector B debe llenarse a partir del último elemento

del Vector A (forma decreciente). El resultado es que el primer elemento del

vector B debe ser el último elemento del vector A, y el último elemento del

vector B debe ser el primer elemento del vector A. Reste ambos Vectores A-

B y almacénelo en el vector R.

18. Construya un algoritmo que realice la siguiente operación. Sean 2

vectores numéricos A y B de 9 elementos numéricos cada uno. El vector A

se debe llenar solo con valores pares y el vector B solo con vectores impares.

En un vector C guarde el resultado de ejecutar 3A + 2B. Imprima el vector C

en forma descendente. Determine el promedio del vector A y el promedio

del VectorB.
ARREGLOS 31

19. Construya un algoritmo que realice las siguientes operaciones. Tiene dos

vectores numéricos de 100 elementos cada uno. Asegúrese que para cada

vector no existan dos elementos consecutivos repetidos. Para el vector A

determine el promedio de valores de las posiciones pares del vector; para el

vector B determine el promedio de valores de las posiciones impares del

vector. Sume los dos vectores guárdelos en un vector C. Imprima C.

Imprima el promedio pedido para el vector A y para el vector B.

20. Construya un algoritmo que realice las siguientes operaciones. Tiene 4

vectores A,B,C y D de 10 elementos numéricos cada uno, llene el vector A con

números pares, el vector B con números impares, el vector C con la suma de A +

B, el vector D con la resta de A – B. Determinar la suma de cada vector y

utilizarlo para llenar el vector R que 4 elementos numéricos, es decir la suma del

vector A corresponde a la posición 0 del Vector R, la suma del vector B

corresponde a la posición 1 del vector R, y así respectivamente con C y D.

Imprima el vector R.

ARREGLOS MULTIDIMENSIONALES

Arreglos Bidimensionales

Un arreglo bidimensional es un array de arrays unidimensionales. Se puede

visualizar a un arreglo bidimensional como una matriz con filas y columnas. El

primer índice indica la fila y el segundo indica la columna

Un array bidimensional es aquel en donde los componentes son accesibles

por medio de una pareja de índices que apunten a la fila y a la columna del

componente requerido. Los arrays de este tipo son conocidos también con el
ARREGLOS 32

nombre de matrices. Conceptualmente, podemos pensar en un array

bidimensional como en una lista compuesta de filas y columnas, en donde para

referirnos a una de ellas emplearemos un número para indicar la posición de fila

y otro número para indicar la posición de la columna del componente deseado.

Declaracion

Los arreglos bidimensionales se declaran de acuerdo al esquema:

<TIPO> <NOMBRE_matriz> [<M>] [<N>];

tipo variable[filas][columnas];

<clase de datos del elemento><nombre del arreglo> [<número de filas>],

[<número de columnas>];

Arreglos Tridimensionales o de más dimensiones

Es una estructura de datos estadística y de un mismo tipo de datos, y de

longitud fija que almacena datos de forma matricial.

De igual forma que los arreglos unidimensionales, el almacenamiento de los

datos en la memoria se realiza en forma secuencial y son accedidos mediante

índices. Los arreglos multidimensionales son también conocidos como tensores.

Declaracion

La sintaxis de declaración de arrays multidimensionales es:

Tipo_dato identificador [dimensión1][dimension2]….[dimensionN];

Donde N es un número natural positivo (también aplicable a los

tridimensionales).

Ejercicios Resueltos
ARREGLOS 33

1. Programa que realiza la suma de dos matrices.

void suma(int A[][MAX], int B[][MAX],

int C[][MAX], int row, int col)

{for

(int i=0; i< i=0; i< row; i++)

for (int j = 0; j < col; j++)

C[i][j]=A[i][j]+B[i][j];

2. Programa que imprime la diagonal de una matriz.

#include <stdio.h>

#include <stdlib.h>

#define size 3

void lectura(int A[][size], int row);

void imprime(int A[][size], int row);

void diagonal(int A[][size], int row);

main()

{ int matriz[size][size];

lectura(matriz,size);

imprime(matriz,size);
ARREGLOS 34

printf("Los elementos de la diagonal son: ");

diagonal(matriz,size);

system("pause");

return 0;

3. Programa que transforme la fecha de formato dd/mm/aa al formato ‘dd de

mes de 20aa’.

int main()

{char fecha[8];

int mes,dia,year;

char

meses[12][12]={"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio"

,"Agosto",

"Septiembre","Octubre","Noviembre","Diciembre"};

printf("Proporciona una fecha en el formato dd/mm/aa ");gets(fecha);

if (check_format(fecha))

{ dia = ((fecha[0]-48)*10)+(fecha[1]-48);

mes = ((fecha[3]-48)*10)+(fecha[4]-48);

year = ((fecha[6]-48)*10)+(fecha[7]-48);

if (year <= 10)


ARREGLOS 35

year += 2000;

else

year += 1900;

if ((dia < 32) && (dia > 0) && (mes < 13) && (mes > 0))

printf("\n\n%d de %s de %d\n\n", dia, meses[mes-1],year);

else

printf("\nError en la fecha\n");

else

printf("\nError en el formato\n");

system("pause");

return 0;

4. En un arreglo tridimensional se almacenan las ventas mensuales de los

últimos 8 años de los tres departamentos de una empresa textil: hilos, lanas y

licra. Escribe un programa en C que obtenga la venta de la empresa en el

segundo año.

float ventas(float textil[][MONTH][YEAR],

int mes, int depart, int year)

{
ARREGLOS 36

int i,j;

float suma=0;

for(i=0; i < depart; i++)

for(j=0; j < mes; j++)

suma += textil[i][j][year-1];

return suma;

5. Que rellene un array con los 100 primeros números enteros y los muestre en

pantalla en orden ascendente.

#include <stdio.h>

#include <stdlib.h>

int main(void)

{ int x,tabla[100];

for (x=1;x<=100;x++)

tabla[x]=x;

for (x=1;x<=100;x++)

{
ARREGLOS 37

printf("%d\n",tabla[x]);

system("PAUSE");

return 0;

6. Que rellene un array con los números primos comprendidos entre 1 y 100 y

los muestre en pantalla en orden ascendente.

#include <stdio.h>

#include <stdlib.h>

int main(void)

int x,cont,z,i,tabla[100];

i=0;

for (x=1;x<=100;x++)

cont=0;

for (z=1;z<=x;z++)

if (x%z==0)
ARREGLOS 38

cont++;

if (cont==2 || z==1 || z==0)

tabla[i]=x;

i++;

for (x=0;x<i;x++)

printf("%d\n",tabla[x]);

system("PAUSE");

return 0;

7. Que lea 10 números por teclado, los almacene en un array y muestre la suma,

resta, multiplicación y división de todos.


ARREGLOS 39

#include <stdio.h>

#include <stdlib.h>

int main(void)

{ int x,tabla[10];

int sum,res,mul,div;

for (x=0;x<10;x++)

printf("Introduzca número\n");

scanf("%d",&tabla[x]);

sum=tabla[0];

res=tabla[0];

mul=tabla[0];

div=tabla[0];

for (x=1;x<10;x++)

sum=sum+tabla[x];

res=res-tabla[x];

mul=mul*tabla[x];
ARREGLOS 40

div=div/tabla[x];

printf("Suma: %d\n",sum);

printf("Resta: %d\n",res);

printf("Multiplicación: %d\n",mul);

printf("División: %d\n",div);

system("PAUSE");

return 0;

8. Que lea 10 números por teclado, los almacene en un array y los ordene de forma

ascendente.

#include <stdio.h>

#include <stdlib.h>

int main()

float aux, numeros[10];

int i,j,n=10;

for (i=0;i<n;i++){

printf("Escriba un número");
ARREGLOS 41

scanf("%f",&numeros[i]);

for(i=0;i<n-1;i++)

for(j=i+1;j<n;j++)

if(numeros[i]<numeros[j])

aux=numeros[i];

numeros[i]=numeros[j];

numeros[j]=aux;

for (i=n-1;i>=0;i--){

printf("%f\n",numeros[i]);

system("PAUSE");

return 0;
ARREGLOS 42

9. Que lea 5 números por teclado, los copie a otro array multiplicados por 2 y

muestre el segundo array.

#include <stdio.h>

#include <stdlib.h>

int main()

int aux, numeros1[5],numeros2[5];

int i,j;

for (i=0;i<5;i++){

printf("Escriba un número");

scanf("%d",&numeros1[i]);

for(i=0;i<5;i++)

numeros2[i]=numeros1[i]*2;

for (i=0;i<5;i++){

printf("%d\n",numeros2[i]);
ARREGLOS 43

system("PAUSE");

return 0;

10. Que muestre los primeros 100 números de izquierda a derecha usando un

array de dos dimensiones.

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[])

{ int x,y, numeros[10][10];

for (x=0;x<10;x++)

{ for (y=0;y<10;y++)

{ numeros[x][y]=(x*10)+1+y;

for (x=0;x<10;x++)

{ for (y=0;y<10;y++)

{ printf("%d ",numeros[x][y]);

}
ARREGLOS 44

printf("\n");

system("PAUSE");

return 0;

11. Que rellene un array de dos dimensiones con números pares, lo pinte y

después que pida una posición X,Y y mostrar el número correspondiente.

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[])

{ int x,y,num=2, numeros[3][3];

for (x=0;x<3;x++)

{ for (y=0;y<3;y++)

numeros[x][y]=num;

num=num*2;

}
ARREGLOS 45

printf("Introduzca coordenada x: ");

scanf("%d",&x);

printf("Introduzca coordenada y: ");

scanf("%d",&y);

printf("El número es: %d\n",numeros[x][y]);

system("PAUSE");

return 0;

12. Llenado de un arreglo de enteros de dimensión 3x2. En este ejemplo el llenado

lo realiza el usuario, en otros ejemplos se verá como realizar llenado de matrices

mediante asignación automática, cálculos de operaciones, etc.

#include <iostream>

using namespace std;

int 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;


ARREGLOS 46

cin>>valor;

matriz[i][j] = valor;

for(int i=0;i<3;i++)

cout<<"|";

for(int j=0; j<2;j++)

cout<<"\t"<<matriz[i][j]<<"\t";

cout<<"|"<<endl;

return 0;}

13. Desarrolle un programa que lea una cadena y diga cuantas vocales hay.

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[])

{ int sum=0,x;
ARREGLOS 47

char frase[50];

printf("Introduzca una frase: ");

gets(frase);

for(x = 0;x < 50;x++)

{ switch (frase[x])

case 'a':

sum++;

break;

case 'e':

sum++;

break;

case 'i':

sum++;

break;

case 'o':

sum++;

break;
ARREGLOS 48

case 'u':

sum++;

break;

default:

break;

printf("\n\nEn la frase hay %d vocales\n\n",sum);

printf("\n\n");

system("PAUSE");

return 0;

Ejercicios Propuestos

1. Escribir una función que acepte como parámetro un vector que puede contener

elementos duplicados. La función debe sustituir cada valor repetido por -5 y

devolver al punto donde fue llamado el vector modificado y el número de

entradas modificadas.

2. Escribir una función a la que se le proporcione una fecha (día, mes, año), así

como un número de días a añadir a esta fecha. La función debe calcular la nueva

fecha y visualizarla.
ARREGLOS 49

3. Escribir una función conversión que reciba como parámetro una cadena

representando una fecha en formato “dd/mm/mm”, como 17/11/91 y la devuelve

en forma de texto: 17 de Noviembre de 1991.

4. Escribir un programa en el que se genere aleatoriamente un vector de 20

números enteros. El vector ha de quedar de tal forma que la suma de los diez

primeros elementos sea mayor que la suma de los diez últimos elementos.

Mostrar el vector original y el vector con la distribución indicada.

5. El juego del ahorcado se juega con 2 personas (o una persona y una

computadora). Un jugador selecciona una palabra y el otro jugador trata de

adivinar la palabra adivinando letras individuales. Diseñar un programa para

jugar al ahorcado. Sugerencia: almacenar una lista de palabras en un array y

seleccionar palabras aleatoriamente.

6. Escribir un programa que permita escribir en sentido inverso una cadena de

caracteres.

7. Buscar una palabra en una cadena y calcular su frecuencia de aparición.

8. Escribir un programa que lea una frase, sustituya todas las secuencias de 2 o

+ blancos por un solo blanco y visualice la frase restante.

9. Escribir un programa que desplace una palabra leída del teclado desde la

izquierda hasta la derecha de la pantalla.

10. Escribir una función que intercambie la i-esima por j-esima de un array MxN.

11. Escribir un programa que lea una colección de cadenas de caracteres de

longitud arbitraria. Por cada cadena leída, su programa hará lo siguiente:

a) Visualizar la longitud de la cadena.

b) Contar el número de ocurrencia de palabras de 4 letras.


ARREGLOS 50

c) Sustituir cada palabra de 4 letras por una de cadena de 4

asteriscos e imprimir una nueva cadena.

12. Escribir un programa que lea una serie de cadenas, a continuación, determine

si la cadena si la cadena es un identificador valido C++. Sugerencias: utilizar los

siguientes subprogramas: longitud (tamaños del identificador en el rango

permitido); primero (determinar si el nombre comienza con un símbolo

permitido); restantes (comprueba si los restantes son caracteres permitidos).

13. Escribir un programa que convierta un numero romano (en forma de cadena

de caracteres) en número arábigo.

14. Escribir un programa que lea el array:

4 7 1 3 5

2 0 6 9 7

3 1 2 6 4

Y lo visualice como:

4 2 3

7 0 1

1 6 2

3 9 6

5 7 4

15. Un vector se dice que es simétrico si el elemento que ocupa la posición i-

esima coincide con el que ocupa la posición n-iesima, siempre que el número de

elementos que almacena el vector sea n. Por ejemplo el vector que almacena los

valor 2,4,5,4,2 es simétrico. Escribir una función que decida si el vector de n

datos que recibe como parámetro es simétrico.


ARREGLOS 51

16. Escribir una función que reciba como parámetro, una matriz cuadrada de

orden N, y calcula la transpuesta de la matriz almacenando el resultado en la

propia matriz.

17. Un vector que almacena n datos se dice que es mayoritario, si existe un

elemento almacenado en el vector que se aparece en el vector más de n/2 veces.

Escribir una función que decida si un vector es mayoritario.

18. Escribir una función que reciba como parámetro una matriz cuadrada de

orden N y decida si es simétrica. Una matriz cuadrada de orden N es simétrica si

A[i][j]==A[j][i] para todos los valores de los índices i,j.

19. Codificar un programa C++ que lea una frase y decida si es palíndroma. Una

frase se dice que es palíndroma si después de haber eliminado los blancos, se

puede leer de igual forma en los 2 sentidos.

20. Escribir un programa que lea una frase y, a continuación, visualice cada

palabra de la frase en columna, seguido del número de letras que compone cada

palabra.

CARACTERES Y CADENAS

Introducción

Después de haber aprendido como manejar TEXTO en C++, ya que hasta el

momento solo sabemos cómo mostrar un texto en pantalla mediante el comando cout.

En C++ se usaran arrays de caracteres para almacenar texto ya que C++ no tiene un tipo

de datos básico para almacenar datos como lo es el tipo string.

Caracter
ARREGLOS 52

Un carácter es una unidad de información que corresponde aproximadamente con

una unidad o símbolo parecido, como los de un alfabeto o silabario de la

forma escrita de un lenguaje natural.

Cadena de caracteres

Una cadena en C++ es un conjunto de caracteres, o valores de tipo char, terminados

con el carácter nulo, es decir el valor numérico 0. Internamente, en el ordenador, se

almacenan en posiciones consecutivas de memoria. Este tipo de estructuras recibe un

tratamiento muy especial, ya que es de gran utilidad y su uso es continuo.

La manera de definir una cadena es la siguiente:

char<identificador>[<longitud máxima>];

Arreglos y Cadena de caracteres

Hasta el momento vimos ejemplos de arreglos enteros. De la misma manera

podríamos crear un arreglo de caracteres, lo que nos permite manipular cadenas.

Ejemplo de declaración:

char arregloCadena[] = "buenas";

Notemos que no hemos especificado índice alguno, el compilador contará la cantidad

de letras que tiene la cadena "buenas" (son 6) y agregará uno para incluir el caracter

nulo ( '\0' ). El caracter nulo indica la terminación de la cadena, es importante siempre

tenerlo en cuenta.

Ejemplo de declaración:
ARREGLOS 53

char arregloCadena2[7] = {'b','u','e','n','a','s','\0'};

En esta declaración inicializamos cada uno de los elementos del arreglo de manera

individual. Notar que inicializamos explícitamente en el elemento 7 del arreglo al

carácter nulo '\0'.

Ejemplo de declaración:

char arregloCadena3[] = "otra cadena";

El arregloCadena3, reservará 12 lugares en memoria, ya que además de los 10 que

suman las palabras, hay un espacio y el carácter nulo.

Arreglos y "cin >>"

Podemos utilizar cin >> arregloCadena para asignar a un arreglo (desde el teclado o

entrada estándar), pero debemos tener en cuenta que cin >>leerá y asignará hasta

detectar el primer carácter en blanco (espacio).

Ejemplo de "cin >>"

char arregloCadena4[25]; cin >> arregloCadena4;

Si aquí el usuario introdujera "hace calor" por teclado,

el arregloCadena4 almacenaría solamente la cadena "hace" y " calor" se ignoraría por

completo. También podría suceder que el usuario ingrese más de 24 caracteres (el

último es el nulo) lo que ocasionaría una "Violación de segmento “al tratar de asignar

valores por fuera del arreglo, así que el programador debería estar atento al uso de cin

>> con arreglos.


ARREGLOS 54

Ejemplo

En el ejemplo que sigue, utilizamos una función llamada cuentaCaracteres definida

después del cuerpo de main(). Esta función cuenta los elementos de los arreglos de

tipo char, que le llegan como parámetros. Para esto utiliza un ciclo for, que incrementa

su variable de control i hasta que cadena[i] sea igual al carácter nulo ('\0'). Cuando esto

sucede la función devuelve el valor de i.Luego dentro de main() también se utiliza un

ciclo exacto for, para mostrar los elementos individuales de cuentaCadena.

Manejo de excepciones

Las excepciones son en realidad errores durante la ejecución. Si uno de esos errores

se produce y no implementamos el manejo de excepciones, el programa sencillamente

terminará abruptamente. Es muy probable que si hay ficheros abiertos no se guarde el

contenido de los buffers, ni se cierren, además ciertos objetos no serán destruidos, y se

producirán fugas de memoria.

En programas pequeños podemos prever las situaciones en que se pueden producir

excepciones y evitarlos. Las excepciones más habituales son las de peticiones de

memoria fallidas.

Veamos este ejemplo, en el que intentamos crear un array de cien millones de enteros:

#include<iostream>

using namespace std;

int main()

{ int *x=NULL;

int y= 100000000;

x= new int[y];
ARREGLOS 55

x[10] = 0;

cout<<”Puntero: ”<<(void*) x<<endl;

delete[] x;

return 0;

El sistema operativo se quejará, y el programa terminará en el momento que

intentamos asignar un valor a un elemento del array.

String

Las strings son un caso especial de arreglo de caracteres, las cuales presentan ciertas

peculiaridades que no son posibles de resolver con métodos usuales.

Por ejemplo no es válido usar simples sentencias de asignación o comparación.

1. char nombre [30], copia[nombre];

copia = nombre; esto no es válido en CPP

2. if(opcion==’si’) Tampoco es válido en CPP

Para casos como estos se deberán usar ciertas funciones de manipulación de strings que

provee el lenguaje C, estas funciones son:

#include <string.h>

a) STRCPY (string destino, string original): Se utiliza para copiar el contenido de

un string original en un string de destino. Ejemplo:

char nombre[30],copia[30];

nombre= getstring(“nombre”);

strcpy(copia,nombre);

strcpy(nombre,”pato”);

b) STRCAT (string1,string2): Encadena o agrega al final de la string1 la string2.

Ejemplo: char nombre[30],copia[30];


ARREGLOS 56

strcpy(nombre,”pepe”);

strcat(nombre,”lopez”);

c) STRCMP (string1,string2): Se utiliza para comparar 2 strings, esta función

regresa cero si ambas strings son iguales, regresa un numero mayor que cero si

string 1 es mayor que string 2 y regresa un número menor que cero si string 1 es

menor alfabéticamente que string 2. Ejemplo:

char opcion[3];

strcmp(opcion,”si”);

if(strcmp(opcion,”si”)==0)

d) STRLEN (string): Esta función regresa la cantidad de caracteres que tiene la

string.

Sintaxis: size_t strlen(const char *s);

Ejemplo:

char*nombre =”Nataly M. Palacios”;

cout<<strlen(nombre)<<endl;

Validación de Datos de Entrada

Para poder hacer la comprobación efectivamente es necesario el uso de la

librería iostream. El estado de flujo se puede comprobar por medio de los bits de la

clase ios. La cual es la clase base de istream, ostream e iostream, estás son las más

utilizadas para el flujo de Entrada y Salida en C++.

La instrucción cin.clear(); borra y establece el flujo a goodbit; Cuando se establece

gootbit todos los flags de error son limpiados.

La instrucción cin.ignore(1024, '\n') Ignorar hasta 1024 caracteres introducidos hasta

encontrar un ENTER o viceversa, lo que primero ocurra.

La instrucción cin.fail() retorna true si una operación de flujo a fallado y es posible


ARREGLOS 57

realizar una recuperación de esos errores.

La instrucción cin.rdstate() retorna true si el estado de flujo es correcto.

Espacio de nombres

En general, en informática, un namespace o espacio de nombres es un medio para

organizar clases dentro de un entorno, agrupándolas de un modo más lógico y

jerárquico. Por ejemplo, si estamos desarrollando un conjunto de clases para las

operaciones de gestión de una biblioteca, podemos ir escribiendo todas las clases y

situarlas dentro de una misma aplicación o DLL (biblioteca). Supongamos que tenemos

dos clases para operaciones de gestión de préstamos, denominadas Titulo y Fecha, y

otras dos clases para operaciones de compra, denominadas Factura y Precio.

Si necesitáramos añadir una clase más para las compras que registre el título del

libro, el nombre más idóneo sería Titulo, pero este nombre ya está siendo utilizado, así

que para evitar problemas de duplicidad, deberíamos elegir otro que puede que no se

ajuste a definir la funcionalidad de la clase.

Este problema se solucionaría mediante el uso de espacios de nombre que, además,

permite organizar mejor cada clase, ya que podemos asignarle un nombre jerárquico

para la funcionalidad que desempeña. De esta forma, podríamos crear

un namespace con el nombre Gestion, que contuviera otros

dos namespaces llamados Prestamo y Compra, para finalmente incluir en cada uno de

ellos las clases correspondientes.

Los espacios de nombres permiten eliminar las ambigüedades y solucionar los

problemas de homonimia que se producen en los documentos, ya que en un mismo


ARREGLOS 58

documento existen palabras con el mismo nombre (p.e. "capital"), pero con diferentes

significados y espacios semánticos (término geográfico/término económico-financiero).

Veamos un ejemplo en el que se produce ambigüedad:

capital capital

<país nombre=“España”> <inversión>

<capital>Madrid</capital> <capital>2000€</capital>

</país> </inversión>

Bibliografia

 Aranguren E. (Mayo 27, 2007). Apuntadores. 2014, de Rincón del vago Sitio

web: http://html.rincondelvago.com/apuntadores-en-lenguajes-de-

programacion.html

 Tejeda H. (No especificad).. Manual de C Tutorial de C curso de C C++. 2014,

de Programatium Sitio web:

http://www.programatium.com/manuales/c/7.htm#SECTION007100000000000

0000

 León W. (Diciembre 05, 2008). Ejercicios De Programación Básica En C++.

2014, de Blogspot Sitio web: http://ejerpbas.blogspot.com/2008/12/arreglos.html

 García G. (No especificada). Problemas resueltos de arreglos. 2014, de Uap

Sitio web:

http://www.uap.edu.pe/pregrado1/02/trabajos/02119/PW_alas/cap_4_otros_prob

_res_array.htm
ARREGLOS 59

 Cisneros E. (Diciembre 23, 2009). Lenguaje C++ Arreglos unidimensionales y

multidimensionales. 2014, de Aldea Universitaria Fray Pedro de Agreda Sitio

web: http://aldeafraypedrodeagreda.files.wordpress.com/2009/12/11-arreglos-

multidimensionales.pdf

 Anónimo. (Mayo, 2013). Ejercicios resueltos Arreglos C++. 2014, de Blogspot

Sitio web: http://cosasresueltas.blogspot.com/2013/05/ejercicios-resueltos-

arreglos-c.html

 Anónimo. (No especificado). Manipulación de cadenas. 2014, de Visual Studio

.NET Sitio web: http://msdn.microsoft.com/es-

pe/library/aa903372(v=vs.71).aspx

 Paszniuk R. (Abril 23, 2013). Arreglos y Cadenas en C++. 2014, de

Programación Sitio web: http://www.programacion.com.py/escritorio/c/arreglos-

y-cadenas-en-c

 Anónimo. (Octubre 10, 2013). Caracter (tipo de dato). 2014, de Wikipedia Sitio

web: http://es.wikipedia.org/wiki/Car%C3%A1cter_%28tipo_de_dato%29

 Anónimo. (No especificado). Curso de C++. 2014, de cconclase.net Sitio web:

http://c.conclase.net/curso/?cap=008

 Anónimo. (No Especificado). Introducción al tipo cadena. 2014, de Nebrija

Sitio web:

http://www.nebrija.es/~abustind/Informatica/MetodologiaI/Cadenas.pdf

 Lamarca M. (Diciembre 8, 2013). Espacios de nombre (namespace). 2014, de

Hipertexto Sitio web: http://www.hipertexto.info/documentos/namespaces.htm

 Anónimo. (Noviembre 29, 2010). Validación de tipos de datos en C++. 2014,

de Cristalab Sitio web: http://www.cristalab.com/tutoriales/validacion-de-tipos-

de-datos-en-c--c92149l/
ARREGLOS 60

 Anónimo. (No especificado). String como arreglo de caracteres. 2014, de

Programación Facil Sitio web: http://www.programacionfacil.com/cpp/string

 Anónimo. (No especificado). Curso de C++. 2014, de cconclase Sitio web:

http://c.conclase.net/curso/?cap=043