Académique Documents
Professionnel Documents
Culture Documents
Unidimensionales (Vectores)
Tipo de
Arreglos
Bidimensionales (Matrices)
2. Tipos de Arreglos
2.1 Vectores.
Es un conjunto de elementos dispuestos a continuación de otro, donde cada elemento
conserva su propio espacio. Además el espacio de cada elemento es igual pata todos y lo
que se puede almacenar en cada uno de ellos si bien pueden ser de diferente valor, el tipo de
información es el mismo.
Para poder referirnos a un elemento del arreglo en particular es necesario utilizar un
índice que vendría a ser la numeración consecutiva de cada espacio que ocupa un dato en el
arreglo. Esta numeración generalmente empieza en 1; sin embargo, que da ésta sujeto a la
iniciativa del programador y los requerimientos del algoritmo que se emplee.
Cuando un arreglo tiene una única numeración (un sólo índice) se le conoce como
un Arreglo Unidimensional, aunque algunos preferimos usar el nombre de Vector.
• Características.
1. Almacena los elementos en la memoria, ocupando posiciones contiguas.
2. Tiene un único nombre de variable que represente a todos los elementos,
diferenciándose cada uno por un índice.
3. Cada elemento puede ser accesado en forma individual.
4. Un índice puede ser un valor explícito, una variable o una expresión algebraica.
• Declaración de un vector.
Tipo_de_dato Nombre_Arreglo [tamaño];
Donde:
- Tipo_de_dato : Cualquiera de los tipo de datos utilizados en algoritmos y
lenguajes de programación.
- Nombre_Arreglo : Es un identificar válido, con el cual nos vamos a referir al
arreglo o vector.
- Tamaño : Representa la cantidad de elementos que puede almacenar el arreglo
o vector.
El valor del índice o posición numérica de un elemento dentro del vector puede
expresarse como:
El valor del índice puede varia de 0 a n-1, donde n es el número de elementos del
vector.
En general, para tener acceso al i-ésimo elemento del vector se escribe
nombre_vector[n-1].
Ejemplo:
Altura_personas
1.39 1.57 1.56 2.02 1.89 1.66
0 1 2 3 4 5
Vec[1]
Vec[2] 7
Vec[3] 8
Vec[4] 9
Vec[5] 10
Vec[1] = 7
Vec[2] = 8
Vec[3] = 9
Vec[4] = 7
Vec[5] = 7
Altura_personas
1.39 1.57 1.56 2.02 1.89 1.66
0 1 2 3 4 5
Inicialización de un Vector.
- Inicializar con valores constantes.
Inicializar los elementos de un vector de N elementos enteros en cero.
Variable
Entero N = 100;
Entero vector[N], i;
Para (i = 1; i <= N; i++)
Vector [ i ] = 0;
Fin_para
Variable
Entero vector[10], i;
Para (i = 1; i <= 9; i++)
Vector [ i ] = i +1;
Fin_para
// Inicialización de cada elemento del vector .
1 2 3 4 5 6 7 8 9 10
0 1 2 3 4 5 6 7 8 9
Variable
Caracter frase[30], car;
Entero i;
Para (i = 0; i < 30; i++)
Imprimir (“Introduzca un carácter :”;
Leer (car);
frase[i] = car;
Fin_para
• I=1
Repetir
Leer (vec[I] );
I = I + 1;
Hasta-que (I>10)
Problemas Desarrollados
Variables
Real vector[50];
Entero i, num;
Inicio
Imprimir (“Ingrese numero de terminos :”);
Leer (num);
Para (i = 1; i <= num; i++)
Imprimir (“Ingrese un numero : ”);
Leer (vector[ i ]);
Fin_para
Para (i = 1; i <= num; i++)
Imprimir (“Elemento “,i, “ : ”, vector[ i ]);
Fin_para
fin
5) Diseñar un algoritmo que permita mostrar la posición del elemento mas pequeño de un vector.
Variable
Entero i, n, menor = 100, num[50],pos=0;
Inicio
Imprimir (“Ingrese cantidad de numeros :”);
Leer (n);
Para (i = 1; i <= n; i++)
Imprimir (“numero [" , i , "] : ");
Leer (vector[i]);
Fin_para
Para (i = 1; i <= n; i++)
si (num[i] < menor)
menor = num[i];
pos = i;
fin_si
fin_para
imprimir ("El elemento mas pequeño menor es : " , menor);
imprimir ("Se encuentra en la posicion : " , pos);
fin
6. Diseñar un algoritmo que permita determinar el mayor y menor de “n” números y luego
intercambiarlos.
Variables
Entero i, n, mayor = 0, menor=100, num[50], aux = 0;
Inicio
Imprimir (“Ingrese cantidad de numeros :”);
Leer (n);
Para (i = 1; i <= n; i++)
Imprimir ( “numero [" , i , "] : ");
Leer (vector[i]);
Fin_para
Para (i = 1; i <= n; i++)
si (num[i] > mayor)
mayor = num[i];
Para i = 1 hasta n
si (num[i] < menor)
menor = num[i];
fin_para
fin_para
Imprimir (“El menor es : " , menor);
Imprimir (“El mayor es : " , mayor);
Imprimir (“Los elementos intercambiados son ");
Para (i = 1 hasta n)
si (num[i] == num[1])
aux = num[i];
Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata
UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS
num[i] = num[n];
num[n] = aux;
fin_si
Imprimir (“elemento [" , i ,"]: " , num[i]);
fin_para
fin
Donde:
- Tipo_de_dato : Cualquiera de los tipo de datos utilizados en algoritmos y lenguajes
de programación.
- Nombre_Tabla : Es un identificar válido, con el cual nos vamos a referir al arreglo o
vector.
- Tamaño1, Tamaño2 : Representa la cantidad de elementos que puede almacenar el
arreglo o vector.
Columna
[j]
Llenado de una matriz
Cada elemento de la tabla se puede utilizar en las operaciones dentro de un
algoritmo, hasta identificarlo correctamente. En lo que respecta a todo el conjunto la única
operación posible es la asignación, para lo cual la variable receptor tendría que ser del
mismo tamaño y tipo. Para leer/escribir elementos en la tabla se utilizan bucles anidados que
tienen variables de control entre los límites inferior y superior de los índices.
• Por renglones
para (i = 1 hasta 5)
para (j = 1 hasta 5)
Leer (Mat [i][j]);
Fin-para
Fin-para
• Por columnas
para (j = 1 hasta 5)
para (i = 1 hasta 5)
Leer (Mat ([i][j]);
Fin-para
Fin-para
Nota: Para hacer el llenado de una matriz se deben de usar dos variables para los índices y
se utilizan 2 ciclos uno para los renglones y otro para las columnas; a estos ciclos se les
llama ciclos anidados (un ciclo dentro de otro ciclo).
Problemas Desarrollados
1) Diseñe un algoritmo que permita ingresar los datos de una matriz de orden 3 x 5 y luego se
mostrar sus valores en la siguiente forma:
3) Diseñe un algoritmo que permita multiplicar una matriz de orden M*N, por un valor constante
ingresado por el usuario.
Variables
Entero Matriz1[20][20], Matriz2[20][20];
Entero i, j, fil, col, K;
Inicio
Imprimir (“Ingrese numero de filas : ”);
Leer (fil);
Imprimir (“Ingrese numero de columnas : ”);
Leer (col);
Imprimir (“Ingrese los elementos de la matriz : ”);
Para ( i = 1 hasta fil)
Para (j = 1 hasta col)
Imprimir (“Elemento [ “, i , “][“, j , “] = ” );
Leer (Matriz1[i][j]);
Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata
UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS
Fin_para
Fin_para
Imprimir (“Ingrese valor de la constante : ”);
Leer (K);
Para ( i = 1 hasta fil)
Para (j = 1 hasta col)
Matriz2[i][j] = Matriz1[i][j] * K;
Fin_para
Fin_para
Imprimir (“Matriz Resultante : ”);
Para ( j = 1 hasta fil)
Para (i = 1 hasta col)
Imprimir (“Elemento [ “, i , “][“, j , “] = ” , Matriz2[i][j]);
Fin_para
Fin_para
Fin
4) Diseñe un algoritmo que permita sumar los elementos que se encuentran en la diagonal principal
de una matriz cuadrada.
Variables
Entero Matriz[20][20];
Entero i, j, filcol, suma = 0;
Inicio
Imprimir (“Ingrese numero de filas y columnas : ”);
Leer (filcol);
Imprimir (“Ingrese los elementos de la matriz : ”);
Para ( i = 1 hasta filcol)
Para (j = 1 hasta filcol)
Imprimir (“Elemento [ “, i , “][“, j , “] = ” );
Leer (Matriz1[i][j]);
Fin_para
Fin_para
Para ( i = 1 hasta filcol)
Para (j = 1 hasta filcol)
Si (i = =j )
Suma = suma + Matriz[i][j];
Fin_para
Fin_para
Imprimir (“La suma de los elementos de la diagonal es : ”, suma);
Fin
5) Diseñe un algoritmo que permita sumar los elementos que no pertenecen a la diagonal principal
de una matriz cuadrada.
Variables
Entero Matriz[20][20];
Entero i, j, filcol, suma = 0;
Inicio
Imprimir (“Ingrese numero de filas y columnas : ”);
Leer (filcol);
Imprimir (“Ingrese los elementos de la matriz : ”);
Para ( i = 1 hasta filcol)
Para (j = 1 hasta filcol)
Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata
UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS
Imprimir (“Elemento [ “, i , “][“, j , “] = ” );
Leer (Matriz1[i][j]);
Fin_para
Fin_para
Para ( i = 1 hasta filcol)
Para (j = 1 hasta filcol)
Si (i != j )
Suma = suma + Matriz[i][j];
Fin_para
Fin_para
6) Diseñar un algoritmo que permita realizar las siguientes operaciones con matrices:
Menú de Opciones
1. Ingreso de datos
2. Ver matriz
3. Suma de filas
4. Suma de columnas
5. Valor mayor
Utilizar funciones.
Variables
Entero nfil = 50, col = 50;
Entero n = 0,m = 0, pfila, pcol;
Real matriz[nfil][ncol];
Real sfilas[nfil]={0};
Real scolumnas[ncol]={0};
Real mayor,may;
Real vector[20];
Caracter r;
Inicio
Repetir
menu(&r);
segun_sea ( r )
Inicio
case '1': Imprimir ("1. Ingreso de datos");
Imprimir ("Ingrese el numero de filas : ");
Leer (n);
Imprimir ("Ingrese el numero de columnas : ");
Leer (m);
ingreso(matriz,n,m);
break;
case '2': Imprimir ("2. Ver matriz");
si (n!=0 && m!=0)
vermatriz(matriz,n,m,1,3);
si_no
Imprimir ("ERROR. Ingrese los datos de la matriz");
break;
case '3' : Imprimir (“3. Sumar por filas ");
Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata
UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS
si(m!=0 && n!=0)
vermatriz(matriz,n,m,1,3);
sumarfilas(matriz,sfilas,m,ncol);
vervector(matriz,sfilas,scolumnas,m);
si_no
Imprimir ("ERROR, Ingrese los datos de la matriz");
break;
case '4' : Imprimir ("4. Sumar por columnas ");
si (m!=0 && n!=0)
vermatriz(matriz,n,m,1,3);
vervector(matriz,sfilas,scolumnas,m);
sumarcolumnas(matriz,scolumnas,m,ncol);
si_no
Imprimir ("ERROR, Ingrese los datos de la matriz";
break;
case '5': Imprimir ("5. Valor mayor ");
si (n!=0 && m!=0)
valormayor(matriz,n,m,&mayor,&pfila,&pcol);
vermatriz(matriz,n,m,1,3);
Imprimir (“El valor mayor 1 es: ", mayor);
Imprimir (“Esta en la posicion [", pfila, "][" , pcol, "]");
si_no
Imprimir ("ERROR. Ingrese los datos de la matriz");
break;
hasta (r != ' 6 ');
fin
7) Diseñar un algoritmo que permita calcular el promedio de la diagonal principal de una matriz
cuadrada de orden n*n
Variables
Entero nfilcol = 10, n, m;
Real matriz[nfilcol][nfilcol];
Caracter rpta;
Inicio
Repetir
Imprimir ("Ingrese el valor n : ");
Leer (n);
ingreso(matriz,n);
Imprimir ("La matriz ingresada es : ");
vermatriz(matriz,m,n,8,n*n+3);
Imprimir ("El promedio de la matriz es : ", prommatriz(matriz,n));
Imprimir ("Desea continuar (S/N)");
rpta = toupper(getch());
hasta (rpta = = 'S' );
fin
8) Diseñe un algoritmo que permita obtener los dos elementos más altos de una matriz de orden
M*N.
Variables
Entero FIL = 50, COL = 50;
Entero matriz[FIL][COL], n, m;
Inicio
Imprimir ("Ingrese numero de filas : ");
Leer (n);
Imprimir ("Ingrese numero de columnas : ");
Leer (m);
ingreso(matriz,n,m);
mayores(matriz,n,m);
fin
9) Diseñe un algoritmo que permite sumar los números mas pequeños de una tabla dado un valor
ingresado por el usuario.
Variables
Entero tabla[20][20];
Entero i, j, s = 0 ,n, m, num;
Inicio
Imprimir ("Ingrese numero de filas : ");
Leer (n);
Imprimir ("Ingrese numero de columnas : ");
Leer (m);
ingreso(tabla, n, m);
Imprimir ("Ingrese un numero : ");
Leer (num);
sumar(tabla, n, m,num);
fin
10) Diseñar un algoritmo para intercambiar el primer y ultimo elemento de una tabla.
Variables
Entero i, j, aux = 0, tabla[20][20], n, m;
Inicio
Imprimir ("Ingrese numero de filas de la tabla : ");
Leer (n);
Imprimir ("Ingrese numero de columnas de la tabla : ");
Leer (m);
ingreso(tabla,n,m);
Imprimir ("Elementos Intercambiados");
intercambiar(tabla,n,m);
fin
Una cadena es una serie de caracteres de longitud variable de 0 a 255. Una variable
tipo cadena está declarada como Carácter, seguida de la longitud máxima entre corchetes.
Una cadena nula es aquella que no tiene caracteres (longitud 0) y se asigna con dos comillas
seguidas “.
Ejemplo
Caracter nombre[21, direccion[31];
Un arreglo de cadena viene hacer una matriz de puro caracteres. Por ejemplo para
representar un arreglo de 25 cadenas para nombres de personas, su declaración sería:
Caracter nombres[25][21]
Carácter nulo
Leer (palabra);
gets (palabra);
Imprimir (palabra);
Puts ( palabra);
- Strcmp(cadena1,cadena2);
Compara el contenido de las cadenas devolviendo el valor 0 si ambas cadenas son
iguales, si la cadena 1 es mayor que la cadena 2 devuelve un valor mayor a 0 y si la
cadena 1 es menor a la cadena 2 devuelve un valor menor a 0.
- strcpy(cadena1,cadena2);
Asigna el contenido de la cadena 2 en la cadena 1.
- strlen (cadena);
Devuelve el número de caracteres que contiene la Cadena dada como parámetro. Si
la cadena estuviese vacía devuelve el valor 0.
- strlwr(cadena);
Convierte una cadena ingresada en mayúsculas a minúsculas.
- strupr(cadena)
Convierte una cadena ingresada en minúsculas a mayúsculas.
- strcat(cadena1,cadena2);
Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata
UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS
Junta o concatena el contenido de la cadena2 con la cadena1, almacenando el
resultado en cadena1.
Caracter cadena1[31];
- strrev (cadena);
Invierte el contenido de una cadena ingresada.
strrev(cadena);
puts (cadena); // aloh
Problemas Desarrollados
1) Diseñar un algoritmo que permita comparar dos cadenas y determinar si las cadenas son iguales,
si la cadena1 es mayor a la cadena2 o si la cadena2 es mayor a la cadena1.
Variables
Caracter cadena1[21] = “hola”;
Caracter cadena2[21] = “HOLA”;
Inicio
si (strcmp(cadena1,cadena2) = = 0)
puts (“Son iguales”);
si_no
si (strcmp(cadena1,cadena2) = = 0)
puts (“Cadena 1 es mayor”);
si_no
puts(”Cadena2 es mayor”);
fin
2) Diseñar un algoritmo que permita ingresar dos cadenas, se concatenen y luego sea almacenada
en un tercera cadena para imprimirla.
Variables
Caracter cadena1[31], cadena2[31], cadena3[31];
Inicio
Imprimir (Ingrese primera cadena :”);
gets(cadena1);
Imprimir (Ingrese segunda cadena :”);
gets(cadena2);
strcat(cadena1,cadena2);
strcpy(cadena3,cadena1);
Imprimir (“la cadena final es : ”,cadena3);
Fin
Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata
UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS
3) Diseñar un algoritmo que permita imprimir la cantidad de elementos que contienen una cadena
ingresada.
Variables
Caracter cadena[41];
Entero longitud = 0;
Inicio
Imprimir (“Ingrese una cadena : ”);
gets(cadena);
Longitud = strlen(cadena);
Imprimir (“La longitud de la cadena es :”, longitud);
Fin
4) Diseñar un algoritmo que haga avanzar en forma horizontal una cadena por la pantalla.
Variables
Caracter cadena1[30] = {“Universidad Cesar Vallejo”};
Caracter cadena2[30];
Inicio
longitud = strlen(cadena1);
y = 1;
gotoxy(y,12); puts(cadena1);
para ( i = 1 hasta (79 - longitud))
cadena2 = “ “ + cadena1;
gotoxy(y,12); puts(cadena2);
para (j = 1 hasta 10000)
y = y + 1;
fin_para
fin
5) Determinar si una cadena de caracteres es un palíndromo (un palíndromo es un texto que se lee
igual hacia la derecha o hacia a la izquierda) ejemplo : radar.
Variables
Caracter cadena[20], nuevacadena[20];
Entero poscar;
Inicio
Imprimir (“Ingrese una cadena :”);
gets(cadena);
strcpy(nuevacadena, cadena);
strrev(cadena);
si (strcmp(nuevacadena, cadena) = = 0)
imprimir (“Si es palindromo”);
si_no
imprimir (“No es palindromo”);
fin