vectores y matrices
DESCRIPTION
Vectores y Matrices en Lenguaje "C"TRANSCRIPT
1
UNIVERSIDAD TÉCNICA
DE AMBATO
FACULTAD DE CIENCIAS HUMANAS
Y DE EDUCACIÓN
CARRERA: INFORMÁTICA Y COMPUTACIÓN
TRABAJO DE PROGRAMACIÓN
CUADERNO DIGITAL
NOMBRE: ALEXANDRA MASAQUIZA
SEMESTRE: TERCERO
AMBATO - ECUADOR
2011
2
VECTORES Y MATRICES
DEFINICIONES GENERALES
Arrays.- es un conjunto de elementos del mismo tipo que tienen el mismo nombre y se diferencian
mediante un índice.
MATRIZ.- Una matriz es un array multidimensional. Se definen igual que los vectores excepto que
se requiere un índice por cada dimensión.
Su sintaxis es la siguiente:
Tipo nombre [tamaño 1] [tamaño 2]...;
VECTOR.-un vector es un array unidimensional. Un vector se declara así: Tipo nombre [tamaño]
El tipo indica el tipo de elemento del array (int ,char, float).
Nombre es un identificador que nombra al array.
Tamaño es una constante que indica el número de elementos del array.
3
APLICACIONES PRÁCTICAS
EJERCICIO N°. 1
1.-Diseñe un programa que me permita ingresar n elemtos en una matriz cuadartica.
ANÁLISIS
Para este ejercicio realizamos lo siguiente:
Utilizamos una función para crear el borde .
En el programa principal utilizamos i y j y el nombre de la matriz que i sera para las filas y j para las
columnas .
Un limite para la matriz de cuanto por cuanto queremos que sea la matriz.
CODIFICADO
#include<stdio.h>
#include<conio.h>
Función
void borde (int i)
{
for(i=3;i<=80;i++)
{
gotoxy(i,3);printf("*");
gotoxy(i,50);printf("*");
}
for(i=3;i<=50;i++)
{
gotoxy(3,i);printf("*");
gotoxy(80,i);printf("*");
}
}
Programa principal
void main()
{
int i,j,col,fila,lim,op;
int matriz1[10][10];
do{
clrscr();
borde(i);
col=12;fila=10;
textcolor(78);
gotoxy(20,3);cprintf("PROGRAMA PARA FORMAR UNA MATRIZ");
gotoxy(10,5);printf("Ingrese el limite:");scanf("%d",&lim);
4
textcolor(82);
gotoxy(7,7);cprintf("MATRIZ ENTRANTE MATRIZ SALIENTE");
Ingreso de la matriz
for(i=1;i<=lim;i++)
{
for(j=1;j<=lim;j++)
{
gotoxy(col,fila);scanf("%d",&matriz1[i][j]);
col=col+4;
}
fila=fila+1;
col=12;
}
Visualización de salida de la matriz
col=30;
fila=10;
for(i=1;i<=lim;i++)
{
for(j=1;j<=lim;j++)
{
col=col+6;
gotoxy(col,fila);printf("%d",matriz1[i][j]);
}
fila=fila+1;
col=30;
}
textcolor(45);
gotoxy(8,22);cprintf("INGRESE 1 PARA CONTINUAR Y 0 PARA SALIR");scanf("%d",&op);
}
while(op==1);
getch();
}
5
PRUEBA DE ESCRITORIO
EJERCICIO 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 2y 9 la matriz es de orden cuadrática se visualiza la
entrada y salida.
ANÁLISIS
Para este ejercicio realizamos lo siguiente:
Utilizamos una funcion para crear el borde .
En el programa principal utilizamos i y j y el nombre de la matriz que i sera para las filas y j para las
columnas .
Un limite para la matriz de cuanto por cuanto queremos que sea la matriz.
Columnas y filas para las posiciones de la matriz.
Un factor para crear los multiplos deseados.
También usamos un textcolor para dar color al programa.
6
CODIFICADO
#include<stdio.h>
#include<conio.h>
Función
void borde (int i)
{
for(i=3;i<=80;i++)
{
gotoxy(i,3);printf("*");
gotoxy(i,50);printf("*");
}
for(i=3;i<=50;i++)
{
gotoxy(3,i);printf("*");
gotoxy(80,i);printf("*");
}
}
Programa principal
void main()
{
int mul,col,fila,i,j,lim,fac,op,x;
int matriz1[10][10];
do{
clrscr();
borde(i);
col=8;fila=10;x=1;
textcolor(82);
gotoxy(20,2);cprintf("PROGRAMA DE UNA MATRIZ CON FACTORES");
gotoxy(5,4);printf("Ingrese un limite:");scanf("%d",&lim);
do{
gotoxy(5,6);printf("Ingrese el factor:");scanf("%d",&fac);
textcolor(45);
gotoxy(10,8);cprintf("M_ENTRADA MA_SALIDA");
}
while(fac<2||fac>9);
for(i=1;i<=lim;i++)
{
for(j=1;j<=lim;j++)
{
matriz1[i][j]=fac*x;
7
gotoxy(col,fila);printf("%d",matriz1[i][j]);
x=x+1;
col=col+4;
}
fila=fila+1;
col=8;
}
col=25;
fila=10;
for(i=1;i<=lim;i++)
{
for(j=1;j<=lim;j++)
{
col=col+6;
gotoxy(col,fila);printf("%d",matriz1[i][j]);
}
fila=fila+1;
col=25;
}
gotoxy(10,20);printf("INGRESE 1 PARA CONTINUAR Y 0 PARA SALIR");scanf("%d",&op);
}
while(op==1);
getch();
}
PRUEBA DE ESCRITORIO
8
EJERCICIO N°. 3
3.-diseñe un programa que e permita ingresar n números enteros en una matriz cuadrática recorra
sus posiciones y obtenga sus datos de su diagonal principal.
ANÁLISIS
Para este ejercicio realizamos lo siguiente:
En este programa no utilizamos ninguna funcion.
En el programa principal utilizamos i y j y el nombre de la matriz que i sera para las filas y j para las
columnas .
Un limite para la matriz de cuanto por cuanto queremos que sea la matriz.
Ingresamos la matriz y su impresión de la misma y obtenemos su diagonal principal.
También usamos un textcolor para dar color al programa.
CODIFICADO
#include<stdio.h>
#include<conio.h>
Programa principal
void main()
{
int i,j,col,fila,lim,op;
int matriz1[10][10];
do{
clrscr();
for(i=3;i<=80;i++)
{
gotoxy(i,3);printf("*");
gotoxy(i,50);printf("*");
}
for(i=3;i<=50;i++)
{
gotoxy(3,i);printf("*");
gotoxy(80,i);printf("*");
}
col=8;fila=10;
textcolor(82);
gotoxy(20,3);cprintf("PROGRAMA DE UNA MATRIZ CON DIAGONAL PRINCIPAL");
gotoxy(10,5);printf("Ingrese el límite:");scanf("%d",&lim);
textcolor(45);
gotoxy(10,7);cprintf("ENTRADA SALIDA DIAGONAL_PRIN");
Ingreso de la matriz
for(i=1;i<=lim;i++)
9
{
for(j=1;j<=lim;j++)
{
gotoxy(col,fila);scanf("%d",&matriz1[i][j]);
col=col+2;
}
fila=fila+1;
col=8;
}
Visualización de salida de la matriz
col=25;
fila=10;
for(i=1;i<=lim;i++)
{
for(j=1;j<=lim;j++)
{
col=col+2;
gotoxy(col,fila);printf("%d",matriz1[i][j]);
}
fila=fila+1;
col=25;
}
Sacamos la diagonal principal
col=50;
fila=10;
for(i=1;i<=lim;i++)
{
for(j=1;j<=lim;j++)
{
if(i==j)
{
gotoxy(col,fila);printf("%d",matriz1[i][j]);
col=col+5;
fila=fila+1;
}
}
}
gotoxy(10,45);printf("INGRESE 1 PARA CONTINUAR Y 0 PARA SALIR");scanf("%d",&op);
}
while(op==1);
getch();
}
10
PRUEBA DE ESCRITORIO
EJERCICIO 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 en las demás posiciones se llena con valores
de ceros.
ANÁLISIS
Para este ejercicio realizamos lo siguiente:
Aquí no utilizamos una funcion para crear el borde .
En el programa principal utilizamos i y j y el nombre de la matriz que i sera para las filas y j para las
columnas .
Un limite para la matriz de cuanto por cuanto queremos que sea la matriz.
También usamos un textcolor para dar color al programa.
Utilizamos variables auxiliares y un factor para sacar los múltiplos y también variables para poner
ordenar adecuadamente las diaginales.
CODIFICADO
#include<stdio.h>
#include<conio.h>
11
Programa principal
void main()
{
int matriz[10][10],i,j,fila,col,n,op,lim,g,x,g1,g2,fac,s,mul,q,me,h;
flushall();
do{
clrscr();
textcolor(7);
for(j=1; j<=80;j++)
{
gotoxy(j,1);printf("*");
gotoxy(j,45);printf("*");
}
for(j=1; j<=45;j++)
{
gotoxy(1,j);printf("³");
gotoxy(80,j);printf("³");
}
gotoxy(1,1);printf("Ú");
gotoxy(80,1);printf("¿");
gotoxy(1,45);printf("À");
gotoxy(80,45);printf("Ù");
col=30;
fila=15;
textcolor(7);
gotoxy(15,4);printf("PROGRAMA CON DIAGONALES DE UNA MATRIZ");
gotoxy(5,6);printf("Ingrese L¡mite :");scanf("%d",&lim);
gotoxy(5,7);printf("Ingrese un Factor :");scanf("%d",&fac);
gotoxy(30,12);printf("DIAGONALES");
Ingreso de la matriz con ceros
for(i=1;i<lim+1;i++)
{
for(j=1;j<lim+1;j++)
{
gotoxy(col,fila);printf("0");
col=col+3;
}
col=30;
fila=fila+3;
}
Sacamos las diagonales principales y secundarias con multiplos
col=30;
12
fila=15;
s=1;
for(i=1;i<lim+1;i++)
{
for(j=1;j<lim+1;j++)
{
textcolor(9);
if(i==j)
{
mul=s*fac;
matriz[i][j]=mul;
gotoxy(col,fila);cprintf("%d",matriz[i][j]);
s=s+1;
col=col+3;
fila=fila+3;
}
}
}
g1=col-3;
g2=15;
x=lim;
q=mul;
for(i=1;i<lim+1;i++)
{
mul=mul+fac;
matriz[i][x]=mul;
textcolor(1);
gotoxy(g1,g2);cprintf("%d",matriz[i][x]);
x=x-1;
g2=g2+3;
g1=g1-3;
}
gotoxy(15,40);printf("Ingrese 1 continuar o 0 para salir: ");scanf("%d",&op);
}
while(op==1);
getch();
}
13
PRUEBA DE ESCRITORIO
EJERCICIO 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
ANÁLISIS
Para este ejercicio realizamos lo siguiente:
Utilizamos una funcion para crear el borde .
En el programa principal utilizamos i y j y el nombre de la matriz que i sera para las filas y j para las
columnas .
Utilizamos contadores y auxiliares.
Un limite para la matriz de cuanto por cuanto queremos que sea la matriz.
Al ingresar la matriz se realiza una validacion.
Buscamos las elementos impares de la matriz los mismos que los guardamos en un vector y este
vector lo ordenamos debidamente.
14
CODIFICADO
#include<conio.h>
#include<stdio.h>
int i,lim,fac,col,fila,j,con,aux,k,col1,fila1,fila2,op, matriz[15][15],vec[15];
Función
void borde()
{
for(i=1;i<=80;i++)
{
textcolor(5);
gotoxy(i,1);cprintf("*");
gotoxy(i,24);cprintf("*");
}
for(i=1;i<=24;i++)
{
textcolor(57);
gotoxy(1,i);cprintf("*");
gotoxy(80,i);cprintf("*");
}
}
Programa principal
void main()
{
do
{
clrscr();
borde();
textcolor(82);
gotoxy(20,2);cprintf("PROGRAMA DE MATRIZ CON VECTOR ORDENADO");
gotoxy(5,4);printf("Ingrese el limite: ");scanf("%d",&lim);
gotoxy(7,7);printf("MATRIZ VEC_IMPAR VEC_ORDENADO");
Ingreso la matriz con su recpectiva validacion
col=6;
fila=9;
for(i=1;i<=lim;i++)
{
for(j=1;j<=lim;j++)
{
do
{
gotoxy(col,fila);printf(" ");
15
gotoxy(col,fila);scanf("%d",&matriz[i][j]);
}
while(matriz[i][j]<5||matriz[i][j]>=45);
col=col+3;
}
col=6;
fila=fila+1;
}
Recorremos la matriz buscamos los elementos impares y ubicamos en un vector
col1=25;
fila1=9;
con=1;
for(i=1;i<=lim;i++)
{
for(j=1;j<=lim;j++)
{
if(matriz[i][j]%2==1)
{
vec[con]=matriz[i][j];
gotoxy(col1,fila1);printf("%d",vec[con]);
con=con+1;
fila1=fila1+1;
}
}
}
fila2=9;
Ordenamos el vector
for(i=1;i<con;i++)
{
for(j=1;j<con;j++)
{
if(vec[i]<vec[j])
{
aux=vec[i];
vec[i]=vec[j];
vec[j]=aux;
}
}
}
for(j=1;j<con;j++)
{
gotoxy(40,fila2);printf("%d",vec[j]);
16
fila2=fila2+1;
}
gotoxy(10,20);printf("Ingrese 1 para continuar y 0 para salir:");scanf("%d",&op);
}
while(op==1);
getch();
}
PRUEBA DE ESCRITORIO
17
EJERCICIO N°. 6
6.- Diseñe un programa utilizando Matrices y Funciones que permita: Ingresar n elementos en una matriz con datos entre 5 y 35, excluyendo las diagonales principal y secundaria, en dónde la diagonal principal se llena con la serie del Fibonaci y la diagonal secundaria con la factorial de los números ascendentes iniciando en 3. Recorra la matriz y guarde los datos de la diagonal principal en las posiciones pares del vector y los datos de la diagonal segundaria en las posiciones impares del vector. Presente como resultado el vector origen resultante y el mismo vector preséntelo impreso en
forma descendente.
ANÁLISIS
Para este ejercicio realizamos lo siguiente:
En el programa principal utilizamos i y j y el nombre de la matriz que i sera para las filas y j para las
columnas .
Un limite para la matriz de cuanto por cuanto queremos que sea la matriz y tambien para el limite
del factorial.
Ingresamos la matriz con su respectiva validación
CODIFICADO
#include<stdio.h>
#include<conio.h>
Programa principal
void main()
{
int matriz[10][10],i,j,fila,col,n,op,lim,g,x,g1,g2,fac,s,lim1,mul,q,me,h,a,b,c,matriz1[10][10];
flushall();
do{
clrscr();
textcolor(7);
for(j=1; j<=80;j++)
{
gotoxy(j,1);printf("*");
gotoxy(j,45);printf("*");
}
for(j=1; j<=45;j++)
{
gotoxy(1,j);printf("³");
gotoxy(80,j);printf("³");
}
gotoxy(1,1);printf("Ú");
18
gotoxy(80,1);printf("¿");
gotoxy(1,45);printf("À");
gotoxy(80,45);printf("Ù");
col=30;
fila=15;
textcolor(7);
gotoxy(15,4);printf("PROGRAMA CON DIAGONALES DE UNA MATRIZ");
gotoxy(5,6);printf("Ingrese L¡mite :");scanf("%d",&lim);
gotoxy(5,8);printf("Ingrese el limite: ");scanf("%d",&lim1);
gotoxy(30,12);printf("DIAGONALES");
Ingreso de la matriz con su respectiva validación
for(i=1;i<lim+1;i++)
{
for(j=1;j<lim+1;j++)
{
do{
gotoxy(col,fila);scanf(" ");
gotoxy(col,fila);scanf("%d",&matriz[i][j]);
}
while(matriz[i][j]<5||matriz[i][j]>=35);
col=col+3;
}
col=30;
fila=fila+3;
}
Diagonal principal
col=30;
fila=15;
s=1;
for(i=1;i<lim1;i++)
{
for(j=1;j<lim1;j++)
{
textcolor(9);
if(i==j)
{
a=0;
b=1;
c=0;
for(i=1;i<=lim1;i++)
{