PAULINA GUATAPI Página 1
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD CIENCIAS HUMANAS Y DE LA EDUCACIÓN
CARRERA DE INFORMÁTICA Y COMPUTACIÓN
NOMBRE: PAULINA GUATAPI
ING: WILMA GAVILANES
CURSO: 3º DOCENCIA EN INFORMÁTICA
FECHA: 7 DE NOVIEMBRE DEL 2011
PAULINA GUATAPI Página 2
VECTORES Y MATRICES EN C
VECTORES
Un vector, también llamado array(arreglo) unidimensional, es una estructura de datos que
permite agrupar elementos del mismo tipo y almacenarlos en un solo bloque de memoria
juntos, uno despues de otro. A este grupo de elementos se les identifica por un mismo
nombre y la posición en la que se encuentran. La primera posición del array es la posición
0.
Podríamos agrupar en un array una serie de elementos de tipo enteros, flotantes,
caracteres, objetos, etc. Crear un vector en c++ es sencillo, seguimos la siguiente
Sintaxix:
Tipo nombre[tamanyo];
MATRICES
Una matriz es un vector de vectores o un también llamado array bidimensional. La manera
de declarar una matriz es c++ es similar a un vector:
Sintaxix:
int matriz[fils][cols];
int es el tipo de dato, matriz es el nombre del todo el conjunto de datos y debo de
especificar el numero de filas y columnas. Las matrices también pueden ser de distintos
tipos de datos como char, float, double,etc.
Las matrices en c++ se almacenan al igual que los vectores en posiciones consecutivas de
memoria. Usualmente uno se hace la idea que una matriz es como un tablero. Pero
internamente el manejo es como su definicion lo indica, un vector de vectores, es decir,
los vectores estan uno detras del otro juntos.
La forma de acceder a los elementos de la matriz es utilizando su nombre e indicando los
2 subindices que van en los corchetes. Si Coloco int matriz[2][3]=10; //estoy asignando al
cuarto elemento de la tercera fila el valor 10. No olvidar que tanto filas como columnas se
enumeran a partir de 0.
PAULINA GUATAPI Página 3
APLICACIÓN PRÁCTICA N° 1
1.-Diseñe un programa que me permita ingresar n elementos en una matriz
cuadrática.
ANALISIS
En el siguiente ejemplo vamos a realizar el ingreso de n elementos en una matriz.
Primero el ingreso de las librerías.
Utilizaremos una función “borde” para realizar un diseño para el borde, en el cual
utilizamos dos ciclos for para los márgenes de la pantalla.
En el programa principal realizamos el ejercicio que a continuación detalla.
Ingresamos un límite para saber el tamaño de la matriz que vamos a ingresar.
Utilizamos dos bucles “for” para el ingreso de la matriz, en el primer for
controlamos las filas, el segundo lazo for para las columnas.
Para el ingreso de datos de una matriz utilizamos la sentencia “scanf”.
Para recorrer una matriz utilizamos de igual forma dos lazos “for” y en este caso
utilizamos la sentencia printf para imprimir la matriz ingresada.
Antes de cerrar la llave del segundo lazo for incrementamos las columas.
Luego de cerrar el segundo lazo for la columna regresa a la misma posición, y las
filas se incrementan.
Declaramos las variables del tipo que utilizamos y cerramos el programa.
DESARROLLO
#include<stdio.h>
#include<conio.h>
int i,k,j,l,f,c,op;
int matriz1[3][3];
//Funcion para el borde de la pantalla.
void borde()
{
for(i=1;i<=60;i++)
{
gotoxy(i,1);printf("%",i);
PAULINA GUATAPI Página 4
gotoxy(i,24);printf("%",i);
}
for(i=1;i<=24;i++)
{
gotoxy(1,i);printf("%",i);
gotoxy(60,i);printf("%",i);
}
}
//Programa principal
void main()
{
//Función para repetir el proceso durante la ejecución.
do
{
clrscr();
//Llama a la función que utilizamos para el borde.
borde();
//Ingresamos el límite.
gotoxy(5,5);printf("ingrese un limite ");scanf("%d",&l);
c=10;
f=10;
//Funciones para el ingreso de la matriz.
for(j=1;j<=l;j++)
{
PAULINA GUATAPI Página 5
for(k=1;k<=l;k++)
{
gotoxy(c,f);scanf("%d",&matriz1[j][k]);
c=c+5;
}
c=10;
f=f+1;
}
c=25;
f=10;
//Funciones para recorrer la matriz ingresada.
for(j=1;j<=l;j++)
{
for(k=1;k<=l;k++)
{
gotoxy(c,f);printf("%d",matriz1[j][k]);
c=c+5;
}
c=25;
f=f+1;
}
gotoxy(10,20);printf("1 para seguir y 0 para salir");scanf("%d",&op);
}
while(op==1);
PAULINA GUATAPI Página 6
getch();
}
EJECUCION
PAULINA GUATAPI Página 7
APLICACIÓN PRÁCTICA N°2
2.-Diseñe un programa que me permita generar n múltiplos de cualquier
factor ingresado desde teclado que se encuentre dicho factor entre 2 y 9 la
matriz es de orden cuadrática se visualiza la entrada y la salida de datos.
ANALISIS:
En este ejemplo vamos a generar n múltiplos de un factor ingresado desde teclado
en una matriz.
Primero el ingreso de las librerías.
Utilizaremos una función “borde” para realizar un diseño para el borde, en el cual
utilizamos dos lazos “for” para los márgenes de la pantalla.
En el programa principal realizamos el ejercicio que a continuación detalla.
Ingresamos un límite para saber el tamaño de la matriz que vamos a generar.
Ingresamos el factor entre 2 y 9.
Para el ingreso del factor utilizamos la instrucción “do while” este nos permite
validar un valor, para que solo nos permita ingresar valores entre 2 y 9.
Utilizamos un contador que inicializamos en 1, luego dentro del lazo for se va
incrementando de uno en uno.
Utilizamos dos bucles “for” para generar la matriz, en el primer lazo for
controlamos las filas, el segundo lazo for para las columnas.
Realizamos el proceso de la multiplicación entre el factor ingresado y el contador,
esto guardamos en una matriz e imprimimos dicha matriz.
Para recorrer una matriz utilizamos de igual forma dos lazos “for” y utilizamos la
sentencia “printf”.
Declaramos globalmente las variables que utilizamos.
DESARROLLO
#include<stdio.h>
#include<conio.h>
int i,fac,l,f,c,op,k,j,a;
int matriz[3][3];
//Funciones para el borde.
void borde()
{
for(i=1;i<=24;i++)
{
gotoxy(1,i);printf("*",i);
gotoxy(60,i);printf("*",i);
PAULINA GUATAPI Página 8
}
for(i=1;i<=60;i++)
{
gotoxy(i,1);printf("*",i);
gotoxy(i,24);printf("*",i);
}
}
void main()
{
do
{
clrscr();
borde();
c=5;
f=6;
gotoxy(2,2);printf("ingrese un límite ");scanf("%d",&l);
//Instrucciones para validar el ingreso.
do
{
gotoxy(20,4);printf(" ");
gotoxy(2,4);printf("ingrese el factor ");scanf("%d",&fac);
}
while(fac<2||fac>9);
a=1;
//Instrucciones para generar la matriz.
for(j=1;j<=l;j++)
{
for(k=1;k<=l;k++)
{
matriz[j][k]=fac*a;
gotoxy(c,f);printf("%d",matriz[j][k]);
a=a+1;
c=c+3;
}
f=f+1;
c=5;
}
c=40;
PAULINA GUATAPI Página 9
f=6;
a=1;
//Instrucciones para recorrer la matriz generada.
for(j=1;j<=l;j++)
{
for(k=1;k<=l;k++)
{
matriz[j][k]=fac*a;
gotoxy(c,f);printf("%d",matriz[j][k]);
a=a+1;
c=c+3;
}
f=f+1;
c=40;
}
gotoxy(10,20);printf("1 para seguir 0 para salir ");scanf("%d",&op);
}
while(op==1);
getch();
}
EJECUCION
PAULINA GUATAPI Página 10
APLICACIÓN PRÁCTICA N°3
3.-Diseñe un programa que me permita ingresar n números enteros en una
matriz cuadrática, recorra sus posiciones y obtenga sus datos de su
diagonal principal.
ANALISIS
Ingresamos una matriz y obtendremos los datos de la diagonal principal para esto
realizaremos lo siguiente.
Primero el ingreso de las librerías.
Utilizaremos una función “borde” para realizar un diseño para el borde, en el cual
utilizamos dos lazos “for” para los márgenes de la pantalla.
En el programa principal realizamos el ejercicio que a continuación detalla.
Ingresamos también un límite es para saber el tamaño de la matriz que
ingresaremos.
Utilizamos dos bucles “for” para el ingreso de la matriz, en el primer laso for
controlamos las filas, el segundo for para las columnas.
Para el ingreso de datos de una matriz utilizamos la sentencia “scanf”.
Para recorrer una matriz utilizamos de igual forma dos lazos “for” y en este caso
utilizamos la función “printf” para imprimir la matriz ingresada.
Para la coger solo los datos de la diagonal principal utilizamos dos bucles “for” y
una sentencia de condición con “if” , las filas deben ser igual a las columnas, si es
verdadero se guardamos en otra matriz los datos de la diagonal principal.
Imprime la matriz resultante y se cierra la llave de la condición.
Antes de cerrar la llave de los bucles “for” incrementamos las columnas y filas.
Declaramos las variables del tipo que utilizamos y cerramos el programa.
DESARROLLO
#include<stdio.h>
#include<conio.h>
int i,c,f,h,j,l,op;
int matriz[9][9];
//Funciones para el borde.
void borde()
{
PAULINA GUATAPI Página 11
for(i=1;i<=24;i++)
{
gotoxy(1,i);printf("&",i);
gotoxy(80,i);printf("&",i);
}
for(i=1;i<=80;i++)
{
gotoxy(i,1);printf("&",i);
gotoxy(i,24);printf("&",i);
}
}
//Programa principal.
void main()
{
do
{
clrscr();
borde();
c=10;
f=10;
//Ingreso del limite.
gotoxy(2,2);printf("INGRESE UN LIMITE ");scanf("%d",&l);
//Instrucciones para el ingreso de una matriz
for(j=1;j<=l;j++)
PAULINA GUATAPI Página 12
{
for(h=1;h<=l;h++)
{
gotoxy(5,7);printf("M.de entrada");
gotoxy(c,f);scanf("%d",&matriz[j][h]);
c=c+3;
}
f=f+1;
c=10;
}
c=25;
f=10;
//Instrucciones para recorrer la matriz Ingresada.
for(j=1;j<=l;j++)
{
for(h=1;h<=l;h++)
{
gotoxy(20,7);printf("M. resultante");
gotoxy(c,f);printf("%d",matriz[j][h]);
c=c+3;
}
f=f+1;
c=25;
}
PAULINA GUATAPI Página 13
c=43;
f=10;
//Instrucciones para los datos de la diagonal principal.
for(j=1;j<=l;j++)
{
for(h=1;h<=l;h++)
{
if(j==h)
{
gotoxy(38,7);printf("M. diagonal principal");
gotoxy(c,f);printf("%d",matriz[j][h]);
c=c+3;
f=f+1;
}
}
}
gotoxy(10,20);printf("1 para seguir 0 para salir ");scanf("%d",&op);
}
while(op==1);
getch();
}
PAULINA GUATAPI Página 14
EJECUCION
PAULINA GUATAPI Página 15
APLICACION PRACTICA N°4
4.-Diseñe un programa que me permita generar múltiplos de cualquier
factor ingresado desde teclado, solo en las diagonales principal y
secundaria, las demásposiciones se llenan con valores ceros.
ANALISIS
En este ejemplo vamos a generar múltiplos de un factor ingresado desde teclado
pero en las diagonales de una matriz.
Primero el ingreso de las librerías.
Utilizaremos una función “borde” para realizar un diseño para el borde, en el cual
utilizamos dos lazos “for” para los márgenes de la pantalla.
En el programa principal realizamos el ejercicio que a continuación detalla.
Ingresamos un límite para saber el tamaño de la matriz que vamos a generar.
Ingresamos un factor cualquiera.
Utilizamos un contador que inicializamos en 1, luego dentro del bucle “for” se va
incrementando de uno en uno.
Utilizamos dos bucles “for” para generar la matriz, en el primer lazo for
controlamos las filas, el segundo for para las columnas.
Una sentencia de condición, si la fila y la columna son iguales multiplica el factor
por un contador guarda en la matriz los múltiplos de la diagonal principal.
Imprime la matriz resultante y cierra la condición y los bucles.
Necesitamos otro contador para el índice de la matriz.
Una nueva variable para la posición de la columna igualada al límite.
Con un lazo repetitivo y el contador para los índices de la matriz multiplicamos el
factor por un nuevo contador y generamos los múltiplos de la diagonal secundaria.
Las columnas deben ir disminuyendo par diferenciar las dos diagonales de la
matriz.
Declaramos las variables del tipo que utilizamos y cerramos el programa.
DESARROLLO
#include<conio.h>
#include<stdio.h>
int i,l,c,f,g,j,fac,m,h,c1,cont,c1,h1,op,c2;
int matriz[10][10];
//Funciones para el borde.
PAULINA GUATAPI Página 16
void borde()
{
for(i=1;i<=80;i++)
{
textcolor(5);
gotoxy(i,1);cprintf("þ",i);
gotoxy(i,24);cprintf("þ",i);
}
for(i=1;i<=24;i++)
{
textcolor(7);
gotoxy(1,i);cprintf("þ",i);
gotoxy(80,i);cprintf("þ",i);
}
}
void main()
{
do
{
clrscr();
borde();
gotoxy(30,4);printf("MATRICES");
gotoxy(4,7);printf("INGRESE UN LIMITE: ");scanf("%d",&l);
gotoxy(4,9);printf("INGRESE UN FACTOR: ");scanf("%d",&fac);
PAULINA GUATAPI Página 17
c=25;
f=15;
m=1;
h=1;
//Instrucciones para generar las diagonales
for(j=1;j<=l;j++)
{
for(g=1;g<=l;g++)
{
//Condición para la diagonal principal.
if(j==g)
{
m=fac*h;
matriz[j][g]=m;
gotoxy(c,f);printf("%d",matriz[j][g]);
h=h+1;
}
else
{
gotoxy(c,f);printf("0");
}
c=c+3;
}
c=25;
PAULINA GUATAPI Página 18
f=f+3;
}
c2=26;
c1=c2+l-1;
f=15;
cont=1;
h1=h;
for(j=1;j<=l;j++)
{
m=fac*h1;
matriz[j][cont]=m;
gotoxy(c1+3,f);printf("%d",matriz[j][cont]);
h1=h1+1;
c1=c1-3;
f=f+3;
}
gotoxy(10,22);printf("DESEA REPETIR EL PROCESO 1 PARA SEGUIR 0 PARA SALIR
");scanf("%d",&op);
}
while(op==1);
getch();
}
PAULINA GUATAPI Página 19
EJECUCION
PAULINA GUATAPI Página 20
APLICACIÓN PRÁCTICA N°5
5.-Diseñe un programa que me permita ingresar n elementos enteros en
una matriz cuadrática los mismos que deben estar en un rango desde 5
hasta 45, recorra la matriz y encuentre todos los elementos impares de la
matriz y guárdelos en un vector, el mismo que se debe presentar en forma
ordenada.
ANALISIS
En el siguiente ejemplo vamos a realizar el ingreso de n elementos en una matriz y
validada en un rango determinado y un proceso para encontrar los datos impares.
Primero el ingreso de las librerías.
Utilizaremos una función “borde” para realizar un diseño para el borde, en el cual
utilizamos dos ciclos for para los márgenes de la pantalla.
En el programa principal realizamos el ejercicio que a continuación detalla.
Ingresamos un límite para saber el tamaño de la matriz que vamos a ingresar.
Utilizamos dos bucles “for” para el ingreso de la matriz, en el primer lazo for
controlamos las filas, el segundo lazo for para las columnas.
Para el ingreso de datos de una matriz utilizamos la sentencia “scanf”.
En el ingreso de la matriz utilizamos la instrucción “do while” para validar el
ingreso de datos en un rango de 5 y 45.
Declaramos un vector de tipo entero y global por que utilizamos funciones.
Para saber que datos ingresados en la matriz son impares utilizamos dos lazos
“for” y una condición en la cual si la variable de la matriz ingresada dividida para 2
el residuo es igual a 1 guardara el dato en un vector.
Imprimimos el vector y cerramos la condición.
Ahora para ordenar el vector, con 2 lazos “for” y una condicion.
Guardamos el vector ordenado y visualizar.
DESARROLLO
#include<conio.h>
#include<stdio.h>
int i,l,fac,c,f,h,j,con,aux,k,c1,f1,f2,op;
int matriz[10][10],vec[10];
void borde()
PAULINA GUATAPI Página 21
{
textcolor(5);
for(i=1;i<=80;i++)
{
textcolor(5);
gotoxy(i,1);cprintf("þ",i);
gotoxy(i,24);cprintf("þ",i);
}
for(i=1;i<=24;i++)
{
textcolor(7);
gotoxy(1,i);cprintf("þ",i);
gotoxy(80,i);cprintf("þ",i);
}
}
void main()
{
do
{
clrscr();
borde();
gotoxy(20,2);printf("VECTORES Y MATRICES ");
//Ingreso del límite
gotoxy(5,4);printf("INGRESE UN LIMITE: ");scanf("%d",&l);
PAULINA GUATAPI Página 22
gotoxy(5,7);printf("MATRIZ");
gotoxy(18,7);printf("VEC.");
gotoxy(26,7);printf("V. ordenado");
c=7;
f=9;
//Ingreso de la matriz.
for(h=1;h<=l;h++)
{
for(j=1;j<=l;j++)
{
//Instrucciones para validar.
do
{
gotoxy(c,f);printf(" ");
gotoxy(c,f);scanf("%d",&matriz[h][j]);
}
while(matriz[h][j]<5||matriz[h][j]>=45);
c=c+3;
}
c=7;
f=f+1;
}
c1=20;
f1=9;
PAULINA GUATAPI Página 23
con=1;
//Instrucción para datos impares
for(h=1;h<=l;h++)
{
for(j=1;j<=l;j++)
{
//Condición para saber los datos impares.
if(matriz[h][j]%2==1)
{
vec[con]=matriz[h][j];
gotoxy(c1,f1);printf("%d",vec[con]);
con=con+1;
f1=f1+1;
}
}
}
//c1=30;
f2=9;
//Instrucciones para ordenar un vector.
for(h=1;h<con;h++)
{
for(j=1;j<con;j++)
{
if(vec[h]<vec[j])
PAULINA GUATAPI Página 24
{
aux=vec[h];
vec[h]=vec[j];
vec[j]=aux;
}
}
}
for(j=1;j<con;j++)
{
gotoxy(30,f2);printf("%d",vec[j]);
f2=f2+1;
}
gotoxy(10,20);printf("1 PARA SEGUIR 0 PARA SALIR ");scanf("%d",&op);
}
while(op==1);
getch();
}
PAULINA GUATAPI Página 25
EJECUCION
PAULINA GUATAPI Página 26
APLICACIÓN PRAFCTICA N°6
6.- Diseñe un programa que me permita realizar el producto algebraico de
dos matrices ingresadas.
ANALISIS
Primero el ingreso de las librerías.
Utilizaremos una función “borde” para realizar un diseño para el borde, en el cual
utilizamos dos ciclos for para los márgenes de la pantalla.
En el programa principal ingresamos un límite para saber el tamaño de la matriz
que vamos a ingresar .
En la función ingreso realizamos el ejercicio que a continuación detalla.
Utilizamos dos bucles “for” para el ingreso de las dos matrices, en el primer lazo
for controlamos las filas, el segundo lazo for para las columnas.
Para el ingreso de datos de las matrices utilizamos la sentencia “scanf”.
Una vez ingresada las dos matrices utilizando tres lazos “for” para realizar el
proceso del producto algebraico.
Una tercera matriz funcionara como un contador que suma a la primera matriz
ingresada y multiplica a la segunda matriz ingresada también , cerramos los bucles.
Con dos lazos for imprimimos la tercera matriz resultante.
En el programa principal llamamos a la función ingreso para visualizar los
resultados en la ejecución.
DESARROLLO
#include<stdio.h>
#include<conio.h>
int l,c,c1,c2,f,f1,f2,k,i,j,op,a,matriz1[10][10],matriz2[10][10],matriz3[10][10];
void borde()
{
for(i=1;i<=25;i++)
{
for(i=1;i<=80;i++)
{
PAULINA GUATAPI Página 27
textcolor(5);
gotoxy(i,1);cprintf("þ",i);
gotoxy(i,24);cprintf("þ",i);
}
for(i=1;i<=24;i++)
{
textcolor(7);
gotoxy(1,i);cprintf("þ",i);
gotoxy(80,i);cprintf("þ",i);
}
}
//Funciones para el ingreso de las dos matrices.
void ingreso()
{
for(i=1;i<=l;i++)
{
for(j=1;j<=l;j++)
{
gotoxy(c,f);scanf("%d",&matriz1[i][j]);
c=c+5;
}
c=5;
f=f+1;
}
PAULINA GUATAPI Página 28
for(i=1;i<=l;i++)
{
for(j=1;j<=l;j++)
{
gotoxy(c1,f1);scanf("%d",&matriz2[i][j]);
c1=c1+5;
}
c1=25;
f1=f1+1;
}
//Instrucciones para el producto algebraico.
for(i=0;i<=l;i++)
{
for(k=0;k<=l;k++)
{
matriz3[i][j]=0;
for(j=0;j<=l;j++)
{
matriz3[i][k]=matriz3[i][k]+matriz1[i][j]*matriz2[j][k];
}
}
}
for(i=1;i<=l;i++)
{
PAULINA GUATAPI Página 29
for(k=1;k<=l;k++)
{
gotoxy(c2,f2);printf("%d",matriz3[i][k]);
c2=c2+4;
}
c2=42;
f2=f2+1;
}
}
//Programa principal
void main()
{
//Instrucción para repetir el proceso en la ejecución.
do
{
clrscr();
borde();
c=5;
c1=25;
c2=42;
f=10;
f1=10;
f2=10;
gotoxy(10,3);printf("PRODUCTO ALGEBRAICO DE UNA MATRIZ");
PAULINA GUATAPI Página 30
gotoxy(10,5);printf("INGRESE UN LIMITE ");scanf("%d",&l);
gotoxy(5,7);printf("ING.M1");
gotoxy(25,7);printf("ING.M2");
gotoxy(40,7);printf("MATRIZ3");
ingreso();
gotoxy(8,20);printf("PRESS 1 PARA SALIR ");scanf("%d",&op);
}
while(op==1);
getch();
}
PAULINA GUATAPI Página 31
EJECUCION