Está en la página 1de 23

UNIVERSIDAD CESAR VALLEJO - PIURA

ESCUELA DE INGENIERIA DE SISTEMAS


ARREGLOS (UNIDIMENSIONALES, BIDIMENSIONALES)
1. Definición de Arreglo.
Un Arreglo es una estructura homogénea de datos que almacena bajo el mismo nombre
(variable) a una colección de datos del mismo tipo.
Los arreglos se caracterizan por:
• Almacenan los elementos en posiciones contiguas de memoria
• Tienen un mismo nombre de variable que representa a todos los elementos. Para hacer
referencia a esos elementos es necesario utilizar un índice que especifica el lugar que ocupa
cada elemento dentro del archivo.

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.

• Uso del Indice de un Vector.


El índice el vector hace referencia a la posición del elemento dentro del conjunto de
datos, lo que permite que se pueda utilizar en cualquiera de las operaciones que se
desarrollen en el algoritmo.

Curso: Metodología de la Programación Docente: Ing. CIP. Hoower A. Puicón Zapata


UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS
Para hacer referencia a un elemento del vector se usa el nombre del mismo, seguido
del índice (entre corchetes), el cual indica una posición en particular del vector.
Nombre_arreglo [ i ]

El valor del índice o posición numérica de un elemento dentro del vector puede
expresarse como:

- Constante entera o valor literal (por ejemplo 3).


- Variable entera (por ejemplo x).
- Expresión entera (por ejemplo x + y - 1). En cualquiera de los casos, el valor del
índice debe ser un entero mayor o igual a cero.

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

Primer elemento : altura_persona[0] = 1.39


Segundo elemento : altura_persona[1] = 1.57
...........
Sexto elemento : altura_persona[5] = 1.66

• Representación gráfica de un vector

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

Primer elemento : altura_persona[0] = 1.39


Segundo elemento : altura_persona[1] = 1.57
Tercer elemento : altura_persona[2] = 1.56
Cuarto elemento : altura_persona[3] = 2.02
Quinto elemento : altura_persona[4] = 1.89

Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata


UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS
Sexto elemento : altura_persona[5] = 1.66
• Operaciones con vectores.
Los vectores no se pueden leer o escribir e un solo operación, la lectura y escritura se
debe hacer elemento por elemento. En forma genérica la lectura/escritura se realiza
siempre dentro de un bucle de que varia entre los límites del índice.
Para (i = 1; i <= N; i++)
Leer (vector [ i ] );
Cada elemento del vector puede intervenir en cualquier operación. En cuanto al
vector en su conjunto sólo puede ser asignado a otro vector del mismo tipo y tamaño.

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

// Inicialización de cada elemento del vector en 0.


0 0 0 0 0 0 .... 0
0 1 2 3 4 5 .... 99

- Inicializar usando variables.


Inicializar los elementos de un vector de 10 elementos enteros con valores del 1 al
10.

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

- Inicializar mediante lectura. Inicializar los elementos de un vector de 30


elementos de tipo carácter con valores introducidos por el usuario.

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

‘f’ ‘r’ ‘a’ ‘s’ ‘e’ ‘‘ ‘c ‘ ‘o’ ‘r’ ‘t’ ‘a’


0 1 2 3 4 5 6 7 8 9 10
Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata
UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS

- Todos los elementos del vector no tienen asignado valores iniciales.


Entero vector [ 8] = { 1, 2 , 3};
Vector [0] = 1 Vector [1] = 2 Vector [2] = 3
Vector [3] = 0 Vector [4] = 0 Vector [5] = 0
Vector [6] = 0 Vector [7] = 0

Real vector [ 5] = { 0.25, 0.00 , 0.30};


Vector [0] = 0.25 Vector [1] = 0.00 Vector [2] = 0.30
Vector [3] = 0.00 Vector [4] = 0.00

Caracter Cdn[ 8] = { ‘S’, ’I’ , ’ ‘ , ’A’ , ’L’ , ’L’ , ’I’, ‘ , ‘};


Cdn [0] = ‘S’ Cdn [1] = ‘I’ Cdn [2] = ’ ‘
Cdn [3] = ‘A‘ Cdn [4] = ‘L’ Cdn [4] = ‘L’
Cdn [4] = ‘I’ Cdn [4] = ‘ , ‘

Formas de llenado de un Vector


• Para (I = 1; I <= 10; I++)
Leer (vec[I] );
Fin-para

• Mientras (I <= 10)


Leer (vec[I] );
Fin-mientras

• I=1
Repetir
Leer (vec[I] );
I = I + 1;
Hasta-que (I>10)

Problemas Desarrollados

1) Diseñar un algoritmo que permita leer N números, almacénelos en un vector e imprímalos.

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

Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata


UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS

2) Diseñar un algoritmo que permita determinar la media aritmética de un conjunto de datos.


Variables
Real vector[50], suma = 0;
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++)
suma = suma + vector[ i ];
Fin_para
Imprimir (“La media aritmética es : ”, suma/num);
Fin

3) Diseñar un algoritmo que permita determinar la cantidad de números positivos, negativos e


iguales a 0, que se encuentra en un vector de “n” elementos.
Variables
Entero i, n, cont1 = 0, cont2 = 0, cont3 = 0, vector[50];
Inicio
Imprimir (“Ingrese cantidad de numero :”);
Leer ( n );
Para (i = 1; i <= n; i++)
Imprimir (“numero [" , i , "] : ");
Leer (vector[i]);
Fin_para
Para (i = 1; i <= n; i++)
si (vector[i] > 0)
cont1 = cont1 + 1;
si_no si (vector [i] < 0)
cont2 = cont2 + 1;
si_no si (vector [i] == 0)
cont3 = cont3 + 1;
fin_para
imprimir ("Cantidad de numero positivos : ", cont1);
imprimir ("Cantidad de numero negativos : ", cont2);
imprimir (“ Cantidad de numero = a cero : ", cont3);
fin

4) Diseñar un algoritmo que permita suma “n” números menores a 50.


Variables
Entero i, n, vector[50], suma = 0;
Inicio
Imprimir (“Ingrese cantidad de numeros :”);
Leer (n);
Para (i = 1; i <= n; i++)
Imprimir (“numero [" , i , "] : ");
Leer (vector[i]);
Fin_para
Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata
UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS
Para (i = 1 hasta n)
si (vector[i] < 50)
suma = suma + vector[i];
fin_para
Imprimir ("Las suma es : ", suma);
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

7. Diseñar un algoritmo que permita determinar el mayor de “n” números ingresados.


Variables
Entero i, n, mayor = 0, num[50];
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];
fin_para
imprimir ("El mayor es : " , mayor);
fin

8. Diseñar un algoritmo que permita determinar el menor de “n” números ingresados.


Variables
Entero i, n, menor = 100, num[50];
Inicio
Imprimir (“Ingrese un numero : ”);
Leer (n);
Para (i = 1; i <= n; i++)
Imprimir (“numero [" , i , "] : ");
Leer (vector[i]);
Fin_para
Para (i = 1 hasta n )
si (num[i] < menor)
menor = num[i];
fin_para
Imprimir ("El menor es : " , menor);
fin

Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata


UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS

2.2. Arreglos Bidimensionales (Matriz).


Es un arreglo de M * N elementos organizados en dos dimensiones donde “M” es el
numero de filas o reglones y “N” el numero de columnas.
Una matriz o tabla es un vector de dos dimensiones, cada una de ellas con un índice. La
forma de concebir este vector es imaginando una tabla de filas y columnas, donde cada dato
ocupa una posición indicada por una fila y una columna.

• Declaración de una matriz o tabla.

Tipo_de_dato Nombre_Tabla [tamaño1][tamaño2];

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.

• Uso del Indice de un Vector.


Los índices permiten identificar un elemento dentro de un conjunto. Para las tablas,
después del nombre del identificador se adiciona un corchete con los dos índices
separados por corchetes.
Entero matriz[10][10];
Los tipos deben ser un tipo ordinal y se pueden colocar como valores explícitos,
variables o expresiones matemáticas.
Para hacer referencia a un elemento de la tabla o matriz se usa el nombre del mismo,
seguido de los índices (entre corchetes), el cual indica una posición en particular de la
tabla o matriz.
Nombre_arreglo [ i ][j]
Donde i indica el renglón y j indica la columna, donde se encuentra almacenado el dato.

Representación gráfica de una matriz

Fila o Renglón Mat [i]I[j]


[i]
1,1 1,2 1,3 1,4
2,1 2,2 2,3 2.4
3,1 3,2 3,3 3,4
4,1 4,2 4,3 4,4

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.

Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata


UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS

• 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:

Matriz original Matriz final


4 7 1 3 5 4 2 3
2 0 6 9 7 7 0 1
3 1 2 6 4 1 6 2
3 9 6
5 7 4
Variables
Entero Matriz[3][5];
Entero i, j;
Inicio
Imprimir (“Ingrese los elementos de la matriz : ”);
Para ( i = 1hasta 3)
Para (j = 1 hasta 5)
Imprimir (“Elemento [ “, i , “][“, j , “] = ” );
Leer (Matriz[i][j]);
Fin_para
Fin_para
Imprimir (“Matriz invertida : ”);
Para ( j = 1hasta 5)
Para (i = 1 hasta 3)
Imprimir (“Elemento [ “, i , “][“, j , “] = ” , Matriz[i][j]);
Fin_para
Fin_para
Fin

Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata


UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS

2) Diseñe un algoritmo que permita determinar la suma de 2 matrices de orden MxN.


Variables
Entero Matriz1[20][20], Matriz2[20][20], Matiz3[20][20];
Entero i, j, fil, col;
Inicio
Imprimir (“Ingrese numero de filas : ”);
Leer (fil);
Imprimir (“Ingrese numero de columnas : ”);
Leer (col);
Imprimir (“Ingrese los elementos de la primera matriz : ”);
Para ( i = 1 hasta fil)
Para (j = 1 hasta col)
Imprimir (“Elemento [ “, i , “][“, j , “] = ” );
Leer (Matriz1[i][j]);
Fin_para
Fin_para
Imprimir (“Ingrese los elementos de la segunda matriz : ”);
Para ( i = 1 hasta fil)
Para (j = 1 hasta col)
Imprimir (“Elemento [ “, i , “][“, j , “] = ” );
Leer (Matriz2[i][j]);
Fin_para
Fin_para
Para ( i = 1 hasta fil)
Para (j = 1 hasta col)
Matriz3[i][j] = Matriz1[i][j] + Matriz2[i][j];
Fin_para
Fin_para
Imprimir (“Matriz Resultante : ”);
Para ( j = 1 hasta fil)
Para (i = 1 hasta col)
Imprimir (“Elemento [ “, i , “][“, j , “] = ” , Matriz3[i][j]);
Fin_para
Fin_para
Fin

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

Imprimir (“La suma de elementos que no estan en la diagonal es : ”, suma);


Fin

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

void ingreso(Real matriz[nfil][ncol], Entero n, Entero m)


Inicio
Variables
Entero i, j;
Para (i = 1; i <= n; i++)
Para ( j = 1 hasta m)
Imprimir ("Ingrese el elemento [", i ,"][“, j ," ] :";
Leer (matriz[i][j]);
Fin_para
Fin_para
Fin

void vermatriz(Real matriz[nfil][ncol], Entero n, Entero m, Entero a, Entero b)


Inicio
Variables
Entero i, j, a2 = a;
Para (i = 1; i <= n; i++)
Para ( j = 1 hasta m)
gotoxy(a2, i + b);
Imprimir (matriz[i][j]);
a2 = a2 + 4;
fin_para
a2 = a;
fin_para
fin
Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata
UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS

void valormayor(Real matriz[nfil][ncol],Entero n,Entero m,Real *mayor,Entero *pfila,Entero*pcol)


Inicio
Variables
Entero may, i , j;
*mayor = matriz[1][1];
*pfila = *pcol = 1;
Para (i = 1; i <= n; i++)
Para ( j = 1 hasta m)
si (*mayor < matriz[i][j])
*mayor = matriz[i][j];
*pfila = i; *pcol = j;
fin_si
fin_para
fin_para
fin

void menu(Caracter *op)


Inicio
gotoxy(6,4);Imprimir(" OPERACIONES EN UNA MATRIZ ");
gotoxy(7,6); Imprimir("1. Ingreso de datos");
gotoxy(7,7); Imprimir("2. Ver matriz");
gotoxy(7,8); Imprimir("3. Suma de filas");
gotoxy(7,9); Imprimir("4. Suma de columnas");
gotoxy(7,10); Imprimir("5. Valor mayor");
gotoxy(7,11); Imprimir("6. Salir");
gotoxy(7,13); Imprimir("Su opcion ");
*op = getch();
fin

void sumarfilas(Real matriz[nfil][ncol], Real sfilas[nfil], Entero m, Entero n)


Inicio
Variables
Real s = 0;
Para (Entero i = 1 hasta m)
Para (Entero j = 1 hasta n)
s = s + matriz[i][j];
sfilas[i] = s;
fin_para
fin_para
fin

void sumarcolumnas(Real matriz[nfil][ncol], Real scolumnas[nfil], Entero m, Entero n)


Inicio
Variables
Real s = 0;
Para (Entero i = 1 hasta m)
Para (Entero j = 1 hasta n)
s = s + matriz[i][j];
scolumnas[i] = s;
fin_para
fin_para
Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata
UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS
fin
void vervector(Real matriz[nfil][ncol], Real sfilas[], Real scolumnas[], Entero m)
Inicio
Variables
Entero x = 1;
Para (i = 1 hasta m )
x = x + 20;
Para (j = 1 hasta ncol)
gotoxy(x, i + 10);
Imprimir ("la suma de las filas es :" , sfilas[i]);
x = 1;
fin_para
x = 21;
Para (i = 1 hasta ncol)
gotoxy(x, m + 10);
Imprimir ("la suma de las columnas es :" , scolumnas[i]);
x = x + 8;
fin_para
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

Real prommatriz(Real matriz[nfilcol][nfilcol], Entero n)


Inicio
Variables
Real prom = 0;
Enetero i , j;
Para (i = hasta n)
Para (j = 1 hasta n )
si (i = = j)
prom = prom + matriz[i][j];
fin_para
fin_para
devolver (prom/n);
Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata
UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS
fin
void vermatriz(Real matriz[nfilcol][nfilcol], Entero m, Entero n, Entero x, Entero y)
Inicio
Variable
Entero x2 = x, i, j;
Para (i = 1 hasta n )
Para (j = 1 hasta n)
gotoxy(x2,i + y); Imprimir (matriz[i][j]);
x2 = x2 + 7;
fin_para
x2 = x;
fin_para
fin

void ingreso(Real matriz[nfilcol][nfilcol], Entero n)


Inicio
Variables
Entero i, j;
Para (i = 1; i <= n; i++)
Para ( j = 1 hasta n)
Imprimir ("Ingrese el elemento [", i ,"][“, j ," ] :";
Leer (matriz[i][j]);
Fin_para
Fin_para
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

void ingreso(Entero matriz[FIL][COL], Entero n, Entero m)


Inicio
Varaibles
Entero i , j;
Para ( i = 0 hasta n)
Para (j = 0 hasta m)
Imprimir ("Ingrese el elemento [" , i , "][", j ,"]: ");
Leer (matriz[i][j]);
Fin_para
Fin_para
Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata
UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS
Fin
void mayores(Entero matriz[FIL][COL], Entero n, Entero m)
Inicio
Variables
Entero mayor1, mayor2, i , j;
mayor1=matriz[0][0];
mayor2=matriz[0][0];
Para ( i = 0 hasta n )
Para ( j = 0 hasta m)
si (matriz[i][j] >= mayor1)
mayor2 = mayor1;
mayor1 = matriz[i][j];
si_no
si (matriz[i][j] >= mayor2)
mayor2 = matriz[i][j];
fin_para
fin_para
Imprimir ("El Primer numero mayor es: " ,mayor1);
Imprimir ("El Segundo numero mayor es: " ,mayor2);
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

Entero ingreso(Entero tabla[20][20], Entero n, Entero m)


Inicio
Variables
Entero i, j;
Para (i = 1; i <= n; i++)
Para (j = 1 hasta m)
Imprimir ("elemento [" , i , "][" , j , "] : ");
Leer (tabla[i][j]);
Fin_para
Fin_para
Fin

Entero sumar(Entero tabla[20][20], Entero n, Entero m, Entero num)


Inicio
Variables
Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata
UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS
Entero i, j, suma = 0;
Para (i = 1; i <= n; i++)
Para (j = 1 hasta m)
si(tabla[i][j] < num)
suma = suma + tabla[i][j];
fin_para
fin_para
Imprimir ("La suma es : " , suma);
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

Entero ingreso(Entero tabla[20][20], Entero n, Entero m)


Inicio
Variables
Entero i, j;
Para (i = 1; i <= n; i++)
Para (j = 1 hasta m)
Imprimir ("elemento [" , i , "][" , j , "] : ");
Leer (tabla[i][j]);
Fin_para
Fin_para
Fin

Entero intercambiar(Entero tabla[20][20], Entero n, Entero m)


Inicio
Variables
Entero i, j, aux = 0;
Para (i = 1; i <= n; i++)
Para (j = 1 hasta m )
si (tabla[i][j] = = tabla[1][1])
aux = tabla[i][j];
tabla[i][j] = tabla[n][m];
tabla[n][m] = aux;
fin_si
Imprimir ("elemento [" , i ,"][" , j , "] : " , tabla[i][j]);
Fin_para
Fin_para
Fin

Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata


UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS

3. Manejo de Cadenas de Caracteres.

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

La dimensión de una cadena debe considerar un carácter adicional para controlar


internamente el FIN de la cadena (‘\0’), por ejemplo si necesitamos una cadena para
almacenar 20 caracteres, la dimensión debe ser 21; si necesitamos una cadena para
almacenar 30 caracteres, la dimensión debe ser de 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]

Representa una matriz de 25 cadenas de 20 caracteres cada uno.

Se puede inicializar una cadena de la siguiente forma:

Caracter cadena[81] = “ ”; ==> cadena vacía


Caracter cadena2[41]

cadena2[0] = ‘\0’; ==> cadena vacía


cadena2[0] = 0; ==> cadena vacía

Caracter cadena2[] = {‘ a ’, ‘ e ’,’ i ’,’ o ’,’ u ’};

Se puede inicializar un arreglo de cadenas de la siguiente forma:

Caracter arreglo[4][21] = {“Pedro”, “Silvia”, “RoseMary”, “Sergio”};


Caracter arreglo[4][ ] = {“Pedro”, “Silvia”, “RoseMary”, “Sergio”};

Nótese que una cadena de n caracteres requerirá un vector de n + 1 elementos,


debido al carácter nulo ‘\0’ que se añade automáticamente al final de la cadena.

Ejemplo : Carácter nulo

Caracter fecha[11] = {‘1’, ’2’, ‘‘ , ’d ’,’ e’, ’ ‘, ‘M ’ ,’ a ’,’ y’, ’o’}

‘1’ ‘2’ ‘’ ‘d’ ‘e’ ‘‘ ‘M ‘ ‘a’ ‘y’ ‘o’ ‘\0’


0 1 2 3 4 5 6 7 8 9 10

Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata


UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS

Almacenar la cadena “Merida” en un vector llamado Ciudad.

Nro. de Valor del Elemento del Carácter de la


Elementos Índice Vector Cadena
1 0 Ciudad[0] ‘M’
2 1 Ciudad[1] ‘e’
3 2 Ciudad[2] ‘r’
4 3 Ciudad[3] ‘i’
5 4 Ciudad[4] ‘d’
6 5 Ciudad[5] ‘a’
7 6 Ciudad[6] ‘\0’

‘M’ ‘e’ ‘r ’ ‘i’ ‘d’ ‘a ‘ ‘\0‘

Carácter nulo

3.1. Lectura y Escritura de Cadenas de Caracteres.

- Leer una cadena introducida por teclado.

Leer (palabra);
gets (palabra);

- Escribir una cadena en la pantalla.

Imprimir (palabra);
Puts ( palabra);

3.2. Funciones para Manipulación de Cadenas de Caracteres.

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

strcpy (cadena1, “Hola”);


strcat (cadena1, “Amigos”);
imprimir (cadena1); //Hola Amigos

- strrev (cadena);
Invierte el contenido de una cadena ingresada.

Caracter cadena[21] = “hola”;

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

Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata


UNIVERSIDAD CESAR VALLEJO – PIURA
ESCUELA DE INGENIERIA DE SISTEMAS

Curso: Algoritmos Docente: Ing. CIP. Elmer Chunga Zapata

También podría gustarte