Funciones con vectores y matrices

50
[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012 1 UNIVERSIDAD TÉCNICA DE AMBATO FACULTAD DE CIENCIAS HUMANAS Y DE EDUCACIÓN CARRERA: DOCENCIA EN INFORMÁTICA PROGRAMACION II ALUMNA: PAULINA GUATAPI SEMESTRE: TERCERO AMBATO - ECUADOR 2012

description

FUNCIONES CON VECTORES Y MATRICES EL C

Transcript of Funciones con vectores y matrices

Page 1: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

1

UNIVERSIDAD TÉCNICA

DE AMBATO

FACULTAD DE CIENCIAS HUMANAS

Y DE EDUCACIÓN

CARRERA: DOCENCIA EN INFORMÁTICA

PROGRAMACION II

ALUMNA:

PAULINA GUATAPI

SEMESTRE:

TERCERO

AMBATO - ECUADOR 2012

Page 2: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

2

Variables

Las variables se pueden clasificar de acuerdo a su tipo de dato. Por ejemplo, una variable puede ser de tipo entero (int) o de tipo carácter (char). Sin embargo, las variables también pueden clasificarse de acuerdo a su ámbito, es decir, la parte del programa en la que la variable es reconocida. De acuerdo con su ámbito, las variables pueden ser locales o globales. Al igual que sucede con las variables declaradas dentro de la función main, cualquier variable que declaremos dentro de una función, es local a esa función, es decir, su ámbito esta confinado a dicha función. Esta situación permite que existan variables con el mismo nombre en diferentes funciones y que no mantengan ninguna relación entre sí.

Llamada a una función

FUNCIONES

Son un grupo de sentencias bajo el mismo nombre que realizan una tarea específica.

Sirven para facilitar la resolución de problemas mediante la aplicación del paradigma “Dividir y Conquistar”.

Ejecuta el grupo de sentencias de una función.

Retorno

Una vez “llamada” la función, esta hace su trabajo, y regresa al mismo punto donde fue llamada.

Declaración de Funciones

De forma similar a las variables, las funciones deben ser declaradas:

tipoDatoRetorno nombreFuncion(lista parámetros);

int potencia(int base, int exponente)

{

Page 3: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

3

sentencias;

}

Pasos para llamar a una Función

Se evalúan las expresiones enviadas como argumentos.

El valor de cada argumento es copiado en orden en cada parámetro correspondiente de la función llamada.

Se ejecutan una a una las sentencias del cuerpo de la función hasta que aparece la sentencia return.

Se evalúa la expresión de la sentencia return.

El programa que llamó a la función continúa, reemplazando en el lugar de la llamada, el valor retornado.

EJERCICIO 1

//bordes en pantalla; funciones sin parametros

#include<stdio.h>

#include<conio.h>

int factor,l,i,mul,fila=14,op;

void borde()

{

int i;

for(i=1;i<=80;i++)

{

gotoxy(i,1);printf("*");

gotoxy(i,40);printf("*");

}

for(i=1;i<=40;i++)

{

gotoxy(1,i);printf("*");

Page 4: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

4

gotoxy(80,i);printf("*");

}

}

void tabla(int factor,int l)

{

for(i=1;i<=l;i++)

{

mul=factor*i;

gotoxy(10,fila);printf("%d * %d= %d",factor,i,mul);

fila=fila+1;

}

}

void main()

{

do

{

clrscr();

borde();

gotoxy(10,13

);printf("tabla");

gotoxy(10,8);printf("INGRESE EL FACTOR ");scanf("%d",&factor);

gotoxy(10,11);printf("INGRESE EL LIMITE ");scanf("%d",&l);

tabla(factor,l);

gotoxy(20,30);printf("1 para seguir 0 para salir ");scanf("%d",&op);

}

while(op==1);

Page 5: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

5

getch();

}

FUNCIONES CON VECTORES

Un vector, solo puede ser argumento formal, es decir; por el momento, no podemos enviarlo como valor de retorno., digo por el momento por que cuando hablemos de punteros, veremos que si se pueden enviar.

EJERCICIO 2

//dise¤e un programa utilizando funciones que me permita ingresar N elementos

//impares dentro de un vector en un rango de 1 hasta 69,presentarlos ordenado

//en forma ascendente, recorrer el vector y buscar todos aquellos numeros que

//sean multiplos de 3, guardarlos en un nuevo vector,presentarlo en forma descendente.

# include<conio.h>

# include<stdio.h>

int l,i,num[20],v[20],f,j,k,a,fi2,fi3,h,vector[20],fi4,op;

void ingreso (int l)

{

j=1;

for(i=1;i<=l;i++)

{

do

{

gotoxy(20,f);printf(" ");

gotoxy(20,f);scanf("%d",&num[i]);

Page 6: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

6

}

while(num[i]<1||num[i]>69);

if(num[i]%2==1)

{

v[j]=num[i];

gotoxy(20,10);printf("ING. DATOS");

gotoxy(20,f);printf("%d",v[j]);

f=f+1;

j=j+1;

}

}

}

void ordenar()

{

for(i=1;i<=l;i++)

{

for(k=1;k<=l;k++)

{

if(v[i]<v[k])

{

a=v[i];

v[i]=v[k];

v[k]=a;

}

}

}

Page 7: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

7

for(i=1;i<=l;i++)

{

gotoxy(28,10);printf("ORDENADOS");

gotoxy(32,fi2);printf("%d",v[i]);

fi2=fi2+1;

}

}

void multiplo()

{

h=1;

for(i=1;i<=l;i++)

{

if(v[i]%3==0)

{

vector[h]=v[i];

gotoxy(38,10);printf("MUL.DE 3");

gotoxy(42,fi3);printf("%d",vector[h]);

fi3=fi3+1;

h=h+1;

}

}

}

void descendente()

{

for(i=1;i<h;i++)

{

Page 8: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

8

for(k=1;k<h;k++)

{

if(vector[i]>vector[k])

{

a=vector[i];

vector[i]=vector[k];

vector[k]=a;

}

}

}

for(i=1;i<h;i++)

{

gotoxy(50,10);printf("DESCENDENTE");

gotoxy(50,fi4);printf("%d",vector[i]);

fi4=fi4+1;

}

}

void main()

{

//do

//{

clrscr();

f=15;

fi2=15;

fi3=15;

fi4=15;

Page 9: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

9

gotoxy(20,5);printf("FUNCION");

gotoxy(10,6);printf("Ingrese el limite");scanf("%d",&l);

ingreso(l);

ordenar();

multiplo();

descendente();

//gotoxy(10,40);printf("PRESS 1 PARA REPETIR");scanf("%d",&op);

//}

//while(op==1);

getch();

}

EJERCICIO 3

//funciomes: Ingrese un vector y validar entre 5 y 55.

#include<stdio.h>

#include<conio.h>

int i,vector[20],vector1[20],lim,j,fila=10;;

void borde()

{

int i;

for(i=1;i<=80;i++)

{

gotoxy(i,1);printf("+");

gotoxy(i,40);printf("+");

}

Page 10: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

10

for(i=1;i<=40;i++)

{

gotoxy(1,i);printf("*");

gotoxy(80,i);printf("*");

}

}

void vectores(int lim)

{

for(i=1;i<=lim;i++)

{

do

{

gotoxy(10,fila);printf(" ");

gotoxy(10,fila);scanf("%d",&vector[i]);

}

while(vector[i]<5||vector[i]>55);

fila=fila+1;

}

}

void main()

{

int fila,i,vector[20];

clrscr();

borde();

gotoxy(20,5);printf("INGRESE EL LIMITE ");scanf("%d",&lim);

gotoxy(10,7);printf("INGRESE LOS VECTORES");

Page 11: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

11

vectores(lim);

getch();

}

EJERCICIO 4

# include<conio.h>

# include<stdio.h>

int factor1,factor2,lim,j,i,vector[20],f,k,h,vector1[20],vector2[20],f1,a,b,l;

void ingreso(int lim)

{

int i;

do

{

gotoxy(10,10);printf("ingrese el primer factor ");scanf("%d",&factor1);

}

while(factor1%3>=1);

do

{

gotoxy(10,12);printf("ingrese el segundo factor ");scanf("%d",&factor2);

}

while(factor2%4>=1);

l=1;

for(i=1;i<=lim;i++);

{

a=factor1*i;

vector1[l]=a;

Page 12: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

12

gotoxy(5,f1);printf("%d",vector1[l]);

f1=f1+1;

}

l=l+1;

for(i=1;i<=lim;i++);

{

b=factor2*i;

vector2[i]=b;

}

for(i=1;i<=lim*2;i++);

{

if(j%2==0)

{

vector[j]=vector1[i];

gotoxy(20,f);printf("%d",vector[j]);

f=f+1;

j=j+1;

}

else

if(j%2==1)

{

vector[j]=vector2[i];

Page 13: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

13

gotoxy(20,f);printf("%d",vector[j]);

f=f+1;

j=j+1;

}

}

}

void main()

{

clrscr();

f=15;

f1=15;

gotoxy(20,5);printf("VECTORES");

gotoxy(20,8);printf("INGRESE EL LIMITE");scanf("%d",&lim);

ingreso(lim);

getch();

}

EJERCICIO 5

//Dise¤e un programa usando funciones que me permita ingresar N elementos

//impares dentro de un vector en un rango de 1 a 69, presentarlo ordenado en

//forma ascendente recorrer el vector y buscar todos aquellos n£meros que sean

//multiplos de 3 guardarlos en un nuevo vector, presentarlo de forma

//descendente

#include<stdio.h>

Page 14: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

14

#include<conio.h>

#include<stdlib.h>

int l,v[25],i,x,f,j,aux,vt[25];

void borde()

{

for(i=1;i<=80;i++)

{

gotoxy(i,1);printf("š");

gotoxy(i,45);printf("š");

}

for(i=1;i<=45;i++)

{

gotoxy(1,i);printf("š");

gotoxy(80,i);printf("š");

}

}

void ingreso(int l)

{

f=16;

j=0;

for(i=1;i<=l;i++)

{

gotoxy(6,14);printf("Vector");

do

{

Page 15: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

15

do

{

gotoxy(10,f);printf(" ");

gotoxy(10,f);scanf("%d",&v[i]);

x=v[i]%2;

}

while(v[i]<1 || v[i]>69);

}

while(x==0);

f=f+1;

j=j+1;

}

}

void ordenar()

{

for(i=1;i<=l;i++)

{

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

{

if (v[i]>v[j])

{

aux=v[i];

v[i]=v[j];

v[j]=aux;

Page 16: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

16

}

}

}

f=16;

for (i=j-1;i>=1;i--)

{

gotoxy(24,14);printf("ORDENADO");

gotoxy(25,f);printf ("%d",v[i]);

f=f+1;

}

}

void multiplos()

{

f=16;

for (i=j-1;i>=1;i--)

{

if(v[i]%3==0)

{

vt[i]=v[i];

gotoxy(34,14);printf("mult de 3");

gotoxy(35,f);printf ("%d",vt[i]);

}

f=f+1;

}

}

void main()

Page 17: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

17

{

clrscr();

gotoxy(20,5);printf("FUNCION");

gotoxy(10,10);printf("Ingrese L¡mite :");scanf("%d",&l);

ingreso(l);

ordenar();

multiplos();

getch();

}

Funciones en las que usamos Menú

En la práctica, muchas veces debemos diseñar programas, que nos permitan elegir la acción o acciones a realizar, es decir haciendo uso de un menú. El cual, no es más ni menos que la aplicación de un selector múltiple. Un switch.

Veamos un ejemplo.

EJERCICIO 6

//dise¤e un programa utilizando vectores y funciones que me permita dise¤ar

//un menu de opciones con las 4 operaciones basicas entre vectores, se valida el

//ingreso p…ra numeros que esten entre 3 y 17, en el caso de la resta verificar

//que siempre el minuendo sea mayor que el sustraendo asi como tambien en el caso

//de la division, los datos y sus resultados se van visualizando paralelamente.

#include<stdio.h>

#include<conio.h>

int i,op,vec1[20],f,l,f1,vec2[20],j,s[20],f2,r[20],m[20],d[20],opc;

Page 18: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

18

void borde()

{

for(i=1;i<=80;i++)

{

gotoxy(i,1);printf("*",i);

gotoxy(i,45);printf("*",i);

}

for(i=1;i<=45;i++)

{

gotoxy(1,i);printf("*",i);

gotoxy(80,i);printf("*",i);

}

}

void ingreso(int l)

{

for(i=1;i<=l;i++)

{

do

{

do

{

gotoxy(10,f);printf(" ");

gotoxy(10,f);scanf("%d",&vec1[i]);

}

while(vec1[i]<3||vec1[i]>17);

f=f+1;

Page 19: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

19

do

{

gotoxy(25,f1);printf(" ");

gotoxy(25,f1);scanf("%d",&vec2[i]);

}

while(vec2[i]<3||vec2[i]>17);

f1=f1+1;

}

while(vec1[i]<vec2[i]);

}

}

void suma()

{

gotoxy(20,5);printf("SUMA");

f1=12;

f2=12;

for(i=1;i<=l;i++)

{

gotoxy(10,f1);printf("%d",vec1[i]);

gotoxy(25,f1);printf("%d",vec2[i]);

f1=f1+1;

s[j]=vec1[i]+vec2[i];

gotoxy(35,f2);printf("%d",s[j]);

j=j+1;

f2=f2+1;

}

Page 20: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

20

}

void resta()

{

gotoxy(20,5);printf("RESTA");

f1=12;

f2=12;

for(i=1;i<=l;i++)

{

gotoxy(10,f1);printf("%d",vec1[i]);

gotoxy(25,f1);printf("%d",vec2[i]);

f1=f1+1;

r[j]=vec1[i]-vec2[i];

gotoxy(35,f2);printf("%d",r[j]);

j=j+1;

f2=f2+1;

}

}

void multiplicacion()

{

gotoxy(20,5);printf("MULTIPLICACION");

f1=12;

f2=12;

for(i=1;i<=l;i++)

{

gotoxy(10,f1);printf("%d",vec1[i]);

gotoxy(25,f1);printf("%d",vec2[i]);

Page 21: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

21

f1=f1+1;

m[j]=vec1[i]*vec2[i];

gotoxy(35,f2);printf("%d",m[j]);

j=j+1;

f2=f2+1;

}

}

void division()

{

gotoxy(20,5);printf("DIVISION");

f1=12;

f2=12;

for(i=1;i<=l;i++)

{

gotoxy(10,f1);printf("%d",vec1[i]);

gotoxy(25,f1);printf("%d",vec2[i]);

f1=f1+1;

d[j]=vec1[i]/vec2[i];

gotoxy(35,f2);printf("%d",d[j]);

j=j+1;

f2=f2+1;

}

}

void main()

{

do

Page 22: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

22

{

clrscr();

f=12;

f1=12;

f2=12;

borde();

gotoxy(20,10);printf("INGRESE UN LIMITE ");scanf("%d",&l);

ingreso(l);

clrscr();

gotoxy(20,5);printf("MENU DE OPCIONES");

gotoxy(10,8);printf("1.- SUMA ");

gotoxy(10,11);printf("2.- RESTA ");

gotoxy(10,14);printf("3.- MULTIPLICACION ");

gotoxy(10,17);printf("4.- DIVISION ");

gotoxy(10,19);printf("5.- SALIR ");

gotoxy(10,22);printf("SELECCIONE UNA OPCION ");scanf("%d",&op);

switch(op)

{

case 1:

clrscr();

suma();

break;

case 2:

clrscr();

resta();

break;

Page 23: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

23

case 3:

clrscr();

multiplicacion();

break;

case 4:

clrscr();

division();

break;

case 5:

exit();

break;

}

gotoxy(20,35);printf("1 para seguir 0 para salir ");scanf("%d",&opc);

}

while(opc==1);

getch();

}

FUNCIONES CON MATRICES

Las matrices se declaran de forma análoga, con corchetes independientes para cada subíndice.

Funciones en las que usamos Menú

En la práctica, muchas veces debemos diseñar programas, que nos permitan elegir la acción o acciones a realizar, es decir haciendo uso de un menú. El cual, no es más ni menos que la aplicación de un selector múltiple. Un switch.

Page 24: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

24

Veamos un ejemplo.

EJERCICIO 7

// Realice un programa que me permita realizar el siguiente menú con funciones. Menu //de opciones números primos, fibonacci, elementos pares, ordenar una matriz

#include<conio.h>

#include<stdio.h>

int i,j,cont1=1,k,vector[10],l,h,cont=1,a,b,vector2[10],c,c2,f2,aux,f,matriz[10][10],x,op,c1,f1;

void primos(int l)

{

clrscr();

gotoxy(20,5);printf("Numeros Primos");

c=10;

f=12;

k=0;

a=1;

for(i=1;i<=l;i++)

{

k=0;

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

{

if(i%j==0)

{

k=k+1;

Page 25: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

25

}

}

if(k<=2)

{

matriz[i][j]=i;

gotoxy(c,f);printf("%d",matriz[i][j]);

c=c+2;

f=f+2;

c=10;

}

}

}

void pares(int l)

{

gotoxy(20,5);printf("Elementos paraes e impares");

gotoxy(10,8);printf("ING. LA MATRIZ ");

c=8;

f=12;

for(i=1;i<=l;i++)

{

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

{

do

{

gotoxy(c,f);printf(" ");

gotoxy(c,f);scanf("%d",&matriz[i][j]);

Page 26: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

26

}

while(matriz[i][j]<1||matriz[i][j]>32);

c=c+3;

}

f=f+2;

c=8;

}

c1=30;

f1=12;

f=12;

c=25;

for(i=1;i<=l;i++)

{

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

{

if(matriz[i][j]%2==0)

{

vector[cont]=matriz[i][j];

//gotoxy(c,f);printf("%d",vector[cont]);

cont=cont+1;

//f=f+2;

}

else

{

vector2[cont1]=matriz[i][j];

// gotoxy(c1,f1);printf("%d",vector2[cont1]);

Page 27: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

27

cont1=cont1+1;

//f1=f1+1;

}

}

}

c2=25;

f2=12;

for(i=1;i<cont;i++)

{

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

{

if(vector[i]<vector[j])

{

aux=vector[i];

vector[i]=vector[j];

vector[j]=aux;

}

}

}

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

{

gotoxy(c2,f2);printf("%d",vector[j]);

f2=f2+2;

}

c2=35;

f2=12;

Page 28: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

28

for(i=1;i<cont1;i++)

{

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

{

if(vector2[i]<vector2[j])

{

aux=vector2[i];

vector2[i]=vector2[j];

vector2[j]=aux;

}

}

}

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

{

gotoxy(c2,f2);printf("%d",vector2[j]);

f2=f2+2;

}

}

void ordenar(int l)

{

gotoxy(20,5);printf("ORDENAR MATRIZ");

gotoxy(10,8);printf("ING. LA MATRIZ ");

c=8;

f=12;

c2=20;

f2=12;

Page 29: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

29

for(i=1;i<=l;i++)

{

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

{

gotoxy(c,f);scanf("%d",&matriz[i][j]);

c=c+3;

}

f=f+2;

c=8;

}

for(i=1;i<=l;i++)

{

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

{

vector[cont]=matriz[i][j];

cont=cont+1;

}

}

for(i=1;i<cont;i++)

{

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

{

if(vector[i]<vector[j])

{

aux=vector[i];

vector[i]=vector[j];

Page 30: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

30

vector[j]=aux;

}

}

}

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

{

gotoxy(c2,f2);printf("%d",vector[j]);

f2=f2+2;

}

f2=12;

for(i=1;i<cont;i++)

{

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

{

if(vector[i]>vector[j])

{

aux=vector[i];

vector[i]=vector[j];

vector[j]=aux;

}

}

}

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

{

gotoxy(c2+6,f2);printf("%d",vector[j]);

f2=f2+2;

Page 31: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

31

}

}

void main()

{

clrscr();

gotoxy(10,5);printf("MENU DE OPCIONES ");

gotoxy(10,8);printf("1.-NUMEROS PRIMOS ");

gotoxy(10,10);printf("2.-FIBONACCI ");

gotoxy(10,12);printf("3.-ELEMENTOS PARES ");

gotoxy(10,14);printf("4.-ORDENAR UNA MATRIZ ");

gotoxy(10,16);printf("ESCOJA UNA OPCION ");scanf("%d",&op);

gotoxy(10,18);printf("Ingrese el limite ");scanf("%d",&l);

switch(op)

{

case 1:

clrscr();

primos(l);

break;

case 3:

clrscr();

pares(l);

break;

case 4:

clrscr();

ordenar(l);

Page 32: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

32

break;

}

getch();

}

Funciones en las que usamos Menú

En la práctica, muchas veces debemos diseñar programas, que nos permitan elegir la acción o acciones a realizar, es decir haciendo uso de un menú. El cual, no es más ni menos que la aplicación de un selector múltiple. Un switch.

EJERCICO 8

//dise¤e un programa utilizando matrices y funciones que me permita

//ingresar n elementos en una matriz con datos entre 5 y 35 esxcluyendo‡

// las diagonal principal y secundaria, en donde la diagonal principal

// se llena con la serie del fibonaci y la diagonal secundaria con el

// factorial de los numeros 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 secundaria en las posiciones

//impares del vector. presente como resulatado el vector de origen y

// el mismo vector impreso en forma descendente

#include<conio.h>

#include<stdio.h>

int i,j,m[10][10],c=8,f=10,l,a,b,d,m1[10][10],v[10],e,f1=10,g;

void borde()

{

Page 33: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

33

for(i=1;i<=25;i++)

{

gotoxy(1,i);printf("@",i);

gotoxy(80,i);printf("@",i);

}

for(i=1;i<=80;i++)

{

gotoxy(i,2);printf("@",i);

gotoxy(i,25);printf("@",i);

}

}

void ingreso(int l)

{

a=0;

b=1;

d=0;

for(i=1;i<=l;i++)

{

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

{

if(i==j)

{

a=b;

b=d;

d=a+b;

m[i][j]=d;

Page 34: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

34

gotoxy(c,f);printf("%d",m[i][j]);

//gotoxy(c,f);scanf("%d",&m[i][j]);

}

else

do

{

gotoxy(c,f);printf(" ");

gotoxy(c,f);scanf("%d",&m[i][j]);

}while(m[i][j]<5||m[i][j]>35);

c=c+3;

}

c=8;

f=f+1;

}

}

void vec(int l)

{

//g=l-2;

for(i=1;i<=l;i++)

{

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

{

if(i==j)

{

v[e]=m[i][j];

gotoxy(20,f1);printf("%d",v[e]);

Page 35: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

35

}

f1=f1+1;

e=e+1;

}

}

}

void main()

{

int l,op;

do

{

c=8;

f=10;

clrscr();

borde();

gotoxy(20,3);printf("EXAMEN");

gotoxy(5,4);printf(" INGRESE UN LIMITE ");scanf("%d",&l);

ingreso(l);

vec(l);

gotoxy(10,22);printf("desea continuar 1 y 0m para salir ");scanf("%d",&op);

}while(op==1);

getch();

}

Page 36: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

36

Funciones en las que usamos Menú

En la práctica, muchas veces debemos diseñar programas, que nos permitan elegir la acción o acciones a realizar, es decir haciendo uso de un menú. El cual, no es más ni menos que la aplicación de un selector múltiple. Un switch.

Veamos un ejemplo.

EJERCICIO 9

//1.-dise¤e un programa que permita generar una matriz cuadratica con

//numeros primos

//2.-dise¤e un programa que permita generar n elementos en una matriz

//cuadratica con la serie de fibonacci

//3.- Diseñe un programa que permita ingresar n elementos entre 1 y 32,

//recorrer la matriz y guardar los elementos pares en un vector y

//los elementos impares en otro vector se presentan los datos ordenados.

//4.-dise¤ar un programa que me permita ordenar en forma ascendente los

// datos de una matriz

#include<stdio.h>

#include<conio.h>

int i,b,c1,f,op,opc,j,k,l,a,b,n,m,b1,c,r,c2,f2,c3,f1,aux;

int matriz1[10][10],vec[10],vec1[10];

void borde()

{

for(i=1;i<=25;i++)

{

gotoxy(1,i);printf("@",i);

Page 37: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

37

gotoxy(80,i);printf("@",i);

}

for(i=1;i<=80;i++)

{

gotoxy(i,2);printf("@",i);

gotoxy(i,25);printf("@",i);

}

}

void primos()

{

for(i=1;i<=l;i++)

{

a=0;

for(k=1;k<=i;k++)

{

if(i%k==0)

{

a=a+1;

}

}

if(a<=2)

{

gotoxy(c1,f);printf("%d",i);

c1=5;

f=f+1;

}

Page 38: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

38

else

{

l=l+1;

}

}

}

void fibonacci()

{

a=0;

b1=1;

c=0;

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

{

for(k=1;k<=l;k++)

{

a=b1;

b1=c;

c=a+b1;

matriz1[j][k]=c;

gotoxy(c1,f);printf("%d",matriz1[j][k]);

c1=c1+8;

}

c1=5;

f=f+1;

}

}

Page 39: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

39

void numeros()

{

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

{

for(k=1;k<=l;k++)

{

do

{

gotoxy(c1,f);printf(" ");

gotoxy(c1,f);scanf("%d",&matriz1[j][k]);

}

while(matriz1[j][k]<1||matriz1[j][k]>32);

c1=c1+9;

}

c1=5;

f=f+1;

}

//pares

c2=30;

f1=10;

a=1;

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

{

for(k=1;k<=l;k++)

{

if(matriz1[j][k]%2==0)

Page 40: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

40

{

vec[a]=matriz1[j][k];

//gotoxy(c2,f1);printf("%d",vec[a]);

a=a+1;

f1=f1+1;

}

}

}

//impares

f2=10;

c3=38;

b=1;

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

{

for(k=1;k<=l;k++)

{

if(matriz1[j][k]%2==1)

{

vec1[b]=matriz1[j][k];

//gotoxy(c3,f2);printf("%d",vec1[b]);

b=b+1;

f2=f2+1;

}

}

}

Page 41: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

41

//ordenado

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

{

for(k=1;k<a;k++)

{

if(vec[j]<vec[k])

{

aux=vec[j];

vec[j]=vec[k];

vec[k]=aux;

}

}

}

aux=1;

f1=10;

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

{

gotoxy(45,f1);printf("%d",vec[j]);

f1=f1+1;

}

//oredenado impares

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

{

for(k=1;k<b;k++)

{

Page 42: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

42

if(vec1[j]<vec1[k])

{

aux=vec1[j];

vec1[j]=vec1[k];

vec1[k]=aux;

}

}

}

aux=1;

f1=10;

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

{

gotoxy(55,f1);printf("%d",vec1[j]);

f1=f1+1;

}

}

void ordenado()

{

for(i=1;i<=l;i++)

{

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

{

gotoxy(c1,f);scanf("%d",&matriz1[i][j]);

c1=c1+7;

}

c1=5;

Page 43: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

43

f=f+1;

}

aux=1;

for(i=1;i<=l;i++)

{

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

{

for(m=1;m<=l;m++)

{

for(n=1;n<=l;n++)

{

if(matriz1[i][j]<matriz1[m][n])

{

aux=matriz1[i][j];

matriz1[i][j]=matriz1[m][n];

matriz1[m][n]=aux;

}

}

}

}

}

for(i=1;i<=l;i++)

{

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

{

gotoxy(c2,f1);printf("%d",matriz1[i][j]);

Page 44: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

44

c2=c2+5;

}

c2=30;

f1=f1+1;

}

}

void main()

{

do

{

clrscr();

borde();

c1=5;

c2=30;

f=10;

c3=38;

f1=10;

f2=10;

gotoxy(10,3);printf("MENU DE OPCIONES");

gotoxy(5,5);printf("1.-NUMEROS PRIMOS");

gotoxy(5,7);printf("2.-SERIE DEL FIBONACCI");

gotoxy(5,9);printf("3.-NUMEROS PARES E IMPARES");

gotoxy(5,11);printf("4.-ORDENACION DE UNA MATRIZ");

gotoxy(5,13);printf("5.-SALIR");

gotoxy(5,16);printf("SELECCIONE UNA OPCION ");scanf("%d",&op);

clrscr();

Page 45: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

45

switch(op)

{

case 1:

borde();

gotoxy(10,5);printf("NUMEROS PRIMOS");

gotoxy(5,7);printf("INGRESE UN LIMITE ");scanf("%d",&l);

primos();

break;

case 2:

borde();

gotoxy(10,5);printf("SERIE DEL FIBONACCI");

gotoxy(5,7);printf("INGRESE UN LIMITE ");scanf("%d",&l);

fibonacci();

break;

case 3:

borde();

gotoxy(10,5);printf("NUMEROS PARES E IMPARES");

gotoxy(5,7);printf("INGRESE UN LIMITE ");scanf("%d",&l);

gotoxy(5,9);printf("MATRIZ");

gotoxy(43,9);printf("PARES");

gotoxy(51,9);printf("IMPARES");

numeros();

break;

case 4:

borde();

gotoxy(10,5);printf("ORDENAR UNA MATRIZ");

Page 46: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

46

gotoxy(5,7);printf("INGRESE UN LIMITE ");scanf("%d",&l);

gotoxy(5,8);printf("MATRIZ");

gotoxy(28,8);printf("MATRIZ ORDENADA");

ordenado();

break;

case 5:

exit();

}

gotoxy(5,20);printf("SELCCIONE 1 PARA CONTINUAR Y 0 PARA SALIR ");scanf("%d",&opc);

}

while(opc==1);

getch();

}

EJERCICIO 10

//producto algebraico de una matriz cuadratica

#include<stdio.h>

#include<conio.h>

int l,c,c1,c2,f,f1,f2,k,i,j,op,a;

int matriz1[10][10],matriz2[10][10],matriz3[10][10];

void borde()

{

for(i=1;i<=25;i++)

{

gotoxy(1,i);printf("@",i);

Page 47: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

47

gotoxy(80,i);printf("@",i);

}

for(i=1;i<=80;i++)

{

gotoxy(i,2);printf("@",i);

gotoxy(i,25);printf("@",i);

}

}

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;

}

for(i=1;i<=l;i++)

{

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

{

gotoxy(c1,f1);scanf("%d",&matriz2[i][j]);

c1=c1+5;

Page 48: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

48

}

c1=25;

f1=f1+1;

}

}

void producto()

{

for(i=0;i<=l;i++)

{

for(j=0;j<=l;j++)

{

matriz3[i][j]=0;

for(k=0;k<=l;k++)

{

matriz3[i][j]=matriz3[i][j]+matriz1[i][k]*matriz2[k][j];

}

}

}

for(i=1;i<=l;i++)

{

for(k=1;k<=l;k++)

{

gotoxy(c2,f2);printf("%d",matriz3[i][k]);

c2=c2+4;

}

c2=42;

Page 49: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

49

f2=f2+1;

}

}

void main()

{

do

{

clrscr();

borde();

c=5;

c1=25;

c2=42;

f=10;

f1=10;

f2=10;

gotoxy(10,3);printf("PRODUCTO ALGEBRAICO DE UNA MATRIZ");

gotoxy(10,5);printf("INGRESE UN LIMITE ");scanf("%d",&l);

gotoxy(5,7);printf("MATRIZ1");

gotoxy(25,7);printf("MATRIZ2");

gotoxy(38,7);printf("MATRIZ RESULTANTE");

ingreso();

producto();

gotoxy(8,20);printf("seleccione 1 para continuar y 0 para salir ");scanf("%d",&op);

}

while(op==1);

getch();

Page 50: Funciones con vectores y matrices

[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012

50

}