funciones con vectores y matrices
DESCRIPTION
FUNCIONES CON VECTORES Y MATRICES EL CTRANSCRIPT
[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
[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)
{
[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("*");
[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);
[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]);
[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;
}
}
}
[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++)
{
[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;
[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("+");
}
[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");
[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;
[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];
[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>
[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
{
[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;
[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()
[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;
[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;
[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;
}
[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]);
[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
[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;
[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.
[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;
[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]);
[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]);
[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;
[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;
[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];
[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;
[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);
[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()
{
[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;
[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]);
[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();
}
[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);
[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;
}
[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;
}
}
[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)
[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;
}
}
}
[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++)
{
[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;
[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]);
[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();
[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");
[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);
[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;
[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;
[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();
[UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
50
}