vectores y matrices en lenguaje C

23
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

description

es un trabajo sobre el uso de vectores y matrices con ejercicios resueltos

Transcript of vectores y matrices en lenguaje C

Page 1: vectores y matrices en  lenguaje C

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

Page 2: vectores y matrices en  lenguaje C

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

Page 3: vectores y matrices en  lenguaje C

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

Page 4: vectores y matrices en  lenguaje C

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++)

Page 5: vectores y matrices en  lenguaje C

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:

Page 6: vectores y matrices en  lenguaje C

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

Page 7: vectores y matrices en  lenguaje C

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;

Page 8: vectores y matrices en  lenguaje C

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:

Page 9: vectores y matrices en  lenguaje C

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

Page 10: vectores y matrices en  lenguaje C

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++)

{

Page 11: vectores y matrices en  lenguaje C

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:

Page 12: vectores y matrices en  lenguaje C

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

Page 13: vectores y matrices en  lenguaje C

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++)

Page 14: vectores y matrices en  lenguaje C

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;

Page 15: vectores y matrices en  lenguaje C

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:

Page 16: vectores y matrices en  lenguaje C

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.

Page 17: vectores y matrices en  lenguaje C

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();

Page 18: vectores y matrices en  lenguaje C

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

Page 19: vectores y matrices en  lenguaje C

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.

Page 20: vectores y matrices en  lenguaje C

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++)

Page 21: vectores y matrices en  lenguaje C

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++)

Page 22: vectores y matrices en  lenguaje C

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:

Page 23: vectores y matrices en  lenguaje C

Carrera de Docencia en Informática

23