Carrera de Docencia en Informática
1
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD CIENCIAS HUMANAS Y DE LA EDUCACIÓN
MATERIA:
PROGRAMACIÓN 2
NOMBRE:
JOHANNA MARIN
LICD:
WILMA GAVILANES
SEMESTRE:
3ro
Carrera de Docencia en Informática
2
Índice
Índice.............................................................................................................. 2
Vectores y matrices ....................................................................................... 3
VECTOR.- .................................................................................................. 3
MATRICES.- .............................................................................................. 3
Aplicaciones prácticas ................................................................................... 3
Diagonal principal ......................................................................................... 9
Diagonal secundaria .................................................................................... 12
Carrera de Docencia en Informática
3
Vectores y matrices
VECTOR.- contiene varios elementos, es un arreglo unidimensional, que tiene un índice y
un dato, cada índice apunta a un solo dato.
MATRICES.- Una matriz es un array multidimensional. Se definen igual que los vectores
excepto que se requiere un índice por cada dimensión.
Ejemplo:
1.1 1.2 1.3
2.1 2.2 2.3
3.1 3.2 3.3
Sintaxis
tipo nombre [tamaño 1][tamaño 2]...;
Una matriz bidimensional se podría representar gráficamente como una tabla con filas y
columnas. La matriz tridimensional se utiliza, por ejemplo, para trabajos gráficos con
objetos 3D.
Aplicaciones prácticas
1. Diseñe un programa que me permita ingresar n elementos en una
matriz cuadrática.
Análisis:
El siguiente programa vamos a realizar en lenguaje C, utilizando la
instrucción gotoxy para ordenar en filas y columnas.
También utilizamos la instrucción clrscr (); para borrar la pantalla cada vez
que se ejecute el programa, getch (); para la pausa del programa.
Índice.
Datos
Diagonal secundaria Diagonal principal
Filas Columna
s
Carrera de Docencia en Informática
4
También utilizamos la función borde para el margen o borde y en el
programa principal llamamos a la función borde.
Ingresamos un límite para el límite de la matriz.
Declaramos a la matriz de tipo entero.
Utilizamos dos lazos for para ingresar una matriz.
Utilizamos la instrucción scanf para ingresar datos en la matriz.
Utilizamos la instrucción printf para visualizar o imprimir los datos de la
matriz.
Utilizamos la sentencia do while para repetir el proceso las veces que el
usuario lo desee.
Codificación:
#include<stdio.h> #include<conio.h>
int i,k,j,l,f,c,op;
int matriz1[3][3];
void borde()
{
for(i=1;i<=60;i++)
{
gotoxy(i,1);printf("%",i);
gotoxy(i,24);printf("%",i);
}
for(i=1;i<=24;i++)
{
gotoxy(1,i);printf("%",i);
gotoxy(60,i);printf("%",i);
}
}
void main()
{
do
{
clrscr();
borde();
gotoxy(5,5);printf("ingrese un limite ");scanf("%d",&l);
c=10;
f=10;
for(j=1;j<=l;j++)
{
for(k=1;k<=l;k++)
Carrera de Docencia en Informática
5
{
gotoxy(c,f);scanf("%d",&matriz1[j][k]);
c=c+5;
}
c=10;
f=f+1;
}
c=25;
f=10;
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);
getch();}
Ejecución del programa:
Carrera de Docencia en Informática
6
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.
Análisis:
El siguiente programa vamos a realizar en lenguaje C, utilizando la
instrucción gotoxy para ordenar en filas y columnas.
También utilizamos la instrucción clrscr (); para borrar la pantalla cada vez
que se ejecute el programa, getch (); para la pausa del programa.
También utilizamos la función borde para el margen o borde y en el
programa principal llamamos a la función borde.
Ingresamos un límite para el límite de la matriz.
Declaramos a la matriz de tipo entero.
Utilizamos dos lazos for para ingresar una matriz.
Utilizamos la instrucción scanf para ingresar datos en la matriz.
Utilizamos la instrucción printf para visualizar o imprimir los datos de la
matriz.
Utilizamos la sentencia do while para validar el ingreso de cualquier factor
entre 2 y 9 , también para repetir el proceso las veces que el usuario lo
desee.
Codificación:
#include<stdio.h>
#include<conio.h>
int i,fac,l,f,c,op,k,j,a;
int matriz[3][3];
void borde()
{
for(i=1;i<=24;i++)
{
gotoxy(1,i);printf("*",i);
Carrera de Docencia en Informática
7
gotoxy(60,i);printf("*",i);
}
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 limite ");scanf("%d",&l);
do
{
gotoxy(20,4);printf(" ");
gotoxy(2,4);printf("ingrese el factor ");scanf("%d",&fac);
}
while(fac<2||fac>9);
a=1;
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;
f=6;
a=1;
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;
Carrera de Docencia en Informática
8
}
f=f+1;
c=40;
}
gotoxy(10,20);printf("1 para seguir 0 para salir ");scanf("%d",&op);
}
while(op==1);
getch();
}
Ejecución del programa:
Carrera de Docencia en Informática
9
Diagonal principal
Es donde las posiciones de filas y columnas son iguales.
Ejemplo:
1.1
2.2
3.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.
Análisis:
El siguiente programa vamos a realizar en lenguaje C, utilizando la
instrucción gotoxy para ordenar en filas y columnas.
También utilizamos la instrucción clrscr (); para borrar la pantalla cada vez
que se ejecute el programa, getch (); para la pausa del programa.
También utilizamos la función borde para el margen o borde y en el
programa principal llamamos a la función borde.
Ingresamos un límite para el límite de la matriz.
Declaramos a la matriz de tipo entero.
Utilizamos dos lazos for para ingresar una matriz. También utilizamos una
condición if que la fila sea igual a la columna para coger los datos de la
diagonal principal.
Utilizamos la instrucción scanf para ingresar datos en la matriz.
Utilizamos la instrucción printf para visualizar o imprimir los datos de la
matriz.
Utilizamos la sentencia do while para repetir el proceso las veces que el
usuario lo desee.
Diagonal principal
Carrera de Docencia en Informática
10
Codificación:
#include<stdio.h>
#include<conio.h>
int i,c,f,h,j,l,op;
int matriz[9][9];
void borde()
{
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);
}}
void main()
{
do
{
clrscr();
borde();
c=10;
f=10;
gotoxy(2,2);printf("INGRESE UN LIMITE ");scanf("%d",&l);
for(j=1;j<=l;j++)
{
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;
for(j=1;j<=l;j++)
{
for(h=1;h<=l;h++)
{
Carrera de Docencia en Informática
11
gotoxy(20,7);printf("M. resultante");
gotoxy(c,f);printf("%d",matriz[j][h]);
c=c+3;
}
f=f+1;
c=25;
}
c=43;
f=10;
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();
}
Ejecución del programa:
Carrera de Docencia en Informática
12
Diagonal secundaria
Es donde las filas se van aumentando hasta el límite y las columnas se van disminuyendo desde
el límite hasta 1.
Orden ascendente las filas.
Orden descendente las columnas.
Ejemplo:
1.1 1.2 1.3
2.1 2.2 2.3
3.1 3.2 3.3
Diagonal secundaria
Carrera de Docencia en Informática
13
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ás posiciones se llenan con valores
ceros.
Análisis:
El siguiente programa vamos a realizar en lenguaje C, utilizando la
instrucción gotoxy para ordenar en filas y columnas.
También utilizamos la instrucción clrscr (); para borrar la pantalla cada vez
que se ejecute el programa, getch (); para la pausa del programa.
También utilizamos la función borde para el margen o borde y en el
programa principal llamamos a la función borde.
Ingresamos un límite para el límite de la matriz.
Declaramos a la matriz de tipo entero.
Utilizamos dos lazos for para ingresar una matriz. También utilizamos una
condición if que la fila sea igual a la columna para coger los datos de la
diagonal principal.
Para la diagonal secundaria se utiliza un contador que le inicializamos en 1
para el control de las columnas. Y la variable de la columna debe irse
disminuyendo de 1 en 1.
Utilizamos la instrucción scanf para ingresar datos en la matriz.
Utilizamos la instrucción printf para visualizar o imprimir los datos de la
matriz.
Utilizamos la sentencia do while para repetir el proceso las veces que el
usuario lo desee.
Codificación:
#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]; void borde() { for(i=1;i<=80;i++)
Carrera de Docencia en Informática
14
{ 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); c=15; f=15; m=1; h=1; c=25; f=15; m=1; h=1; for(j=1;j<=l;j++) { for(g=1;g<=l;g++) { 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; f=f+3;
Carrera de Docencia en Informática
15
} 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; gotoxy(10,22);printf("DESEA REPETIR EL PROCESO 1 PARA SEGUIR 0 PARA SALIR ");scanf("%d",&op); } while(op==1); getch(); }
Ejecución del programa:
Carrera de Docencia en Informática
16
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.
Análisis:
El siguiente programa vamos a realizar en lenguaje C, utilizando la
instrucción gotoxy para ordenar en filas y columnas.
También utilizamos la instrucción clrscr (); para borrar la pantalla cada vez
que se ejecute el programa, getch (); para la pausa del programa.
También utilizamos la función borde para el margen o borde y en el
programa principal llamamos a la función borde.
Ingresamos un límite para el límite de la matriz.
Carrera de Docencia en Informática
17
Declaramos a la matriz de tipo entero.
Utilizamos dos lazos for para ingresar una matriz.
Utilizamos la condición if para saber que datos ingresados en la matriz son
impares.
También usamos un auxiliar para guardar el vector para poder ordenar el
vector.
Utilizamos la instrucción scanf para ingresar datos en la matriz.
Utilizamos la instrucción printf para visualizar o imprimir los datos de la
matriz.
Utilizamos la sentencia do while para repetir el proceso las veces que el
usuario lo desee.
Codificación:
#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()
{
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();
Carrera de Docencia en Informática
18
borde();
gotoxy(20,2);printf("VECTORES Y MATRICES ");
gotoxy(5,4);printf("INGRESE UN LIMITE: ");scanf("%d",&l);
gotoxy(5,7);printf("MATRIZ");
gotoxy(18,7);printf("VEC.");
gotoxy(26,7);printf("V. ordenado");
c=7;
f=9;
for(h=1;h<=l;h++)
{
for(j=1;j<=l;j++)
{
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;
con=1;
for(h=1;h<=l;h++)
{
for(j=1;j<=l;j++)
{
if(matriz[h][j]%2==1)
{
vec[con]=matriz[h][j];
gotoxy(c1,f1);printf("%d",vec[con]);
con=con+1;
f1=f1+1;
}
}
}
f2=9;
for(h=1;h<con;h++)
{
for(j=1;j<con;j++)
{
if(vec[h]<vec[j])
{
aux=vec[h];
Carrera de Docencia en Informática
19
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();
}
Ejecución del programa:
6. Realice un programa que me permita ingresar dos matrices y
realizar el producto algebraico de las mismas.
Carrera de Docencia en Informática
20
Análisis:
El siguiente programa vamos a realizar en lenguaje C, utilizando la
instrucción gotoxy para ordenar en filas y columnas.
También utilizamos la instrucción clrscr (); para borrar la pantalla cada vez
que se ejecute el programa, getch (); para la pausa del programa.
También utilizamos la función borde para el margen o borde y en el
programa principal llamamos a la función borde.
Ingresamos un límite para el límite de la matriz.
Declaramos a la matriz de tipo entero.
Utilizamos dos lazos for para ingresar dos matrices.
Luego utilizamos tres lazos for. los dos primeros lazos for es para el control
de los datos ingresados en las columnas y filas de la matriz.
Realizamos el proceso utilizando una tercera matriz, esta matriz va a
funcionar como un contador el cual le inicializamos en 0 y esta matriz es la
que suma a la primera matriz ingresada y multiplica a la segunda matriz.
Utilizamos funciones uno para el ingreso y otro para el proceso y en el
programa principal llamamos a las funciones.
Utilizamos la instrucción scanf para ingresar datos en la matriz.
Utilizamos la instrucción printf para visualizar o imprimir los datos de la
matriz.
Utilizamos la sentencia do while para repetir el proceso las veces que el
usuario lo desee.
Codificación:
#include<stdio.h>
#include<conio.h>
int i,l,c,f,c1,f1,j,h,g,op,col,fl;
int m[10][10],m1[10][10],mr[10][10];
void borde()
{
textcolor(11);
for(i=1;i<=45;i++)
Carrera de Docencia en Informática
21
{
gotoxy(1,i);cprintf("&",i);
gotoxy(80,i);cprintf("&",i);
}
for(i=1;i<=80;i++)
{
gotoxy(i,1);cprintf("&",i);
gotoxy(i,45);cprintf("&",i);
}
}
void ingreso()
{
c=6;
f=12;
for(h=1;h<=l;h++)
{
for(g=1;g<=l;g++)
{
gotoxy(c,f);scanf("%d",&m[h][g]);
c=c+3;
}
c=6;
f=f+2;
}
c1=20;
f1=12;
for(h=1;h<=l;h++)
{
for(g=1;g<=l;g++)
{
gotoxy(c1,f1);scanf("%d",&m1[h][g]);
c1=c1+3;
}
c1=20;
f1=f1+2;
}
}
void producto(int l)
{
col=30;
fl=12;
for(h=0;h<=l;h++)
{
for(g=0;g<=l;g++)
{
mr[h][g]=0;
for(j=0;j<=l;j++)
Carrera de Docencia en Informática
22
{
mr[h][g]=mr[h][g]+m[h][j]*m1[j][g];
}}}
for(h=1;h<=l;h++)
{
for(j=1;j<=l;j++)
{
gotoxy(col,fl);printf("%d",mr[h][j]);
col=col+3;
}
col=30;
fl=fl+2;
}}
void main()
{
do
{
clrscr();
borde();
gotoxy(10,5);printf("PRODUCTO ALGEBRAICO DE MATRICES");
gotoxy(7,8);printf("INGRESE UN LIMITE: ");scanf("%d",&l);
gotoxy(6,10);printf("MATRIZ 1");
gotoxy(18,10);printf("MATRIZ 2");
gotoxy(30,10);printf("PRDCT DE 2 MATRZ");
ingreso();
producto(l);
gotoxy(10,20);printf("1 PARA SEGUIR 0 PARA SALIR: ");scanf("%d",&op);
}
while(op==1);
getch();
}
Ejecución del programa:
Carrera de Docencia en Informática
23