vectores y matrices

19
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

Upload: masaquiza-alexa

Post on 13-Mar-2016

216 views

Category:

Documents


1 download

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

{

19

for(j=1;j<=lim1;j++)

{

a=b;

b=c;

c=a+b;

matriz1[i][j]=c;

gotoxy(col,fila);cprintf("%d",matriz1[i][j]);

s=s+1;

col=col+3;

fila=fila+3;

}

}

}

}

}

gotoxy(15,40);printf("Ingrese 1 continuar o 0 para salir: ");scanf("%d",&op);

}

while(op==1);

getch();

}

PRUEBA DE ESCRITORIO