1. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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
1
2. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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”.
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
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)
{
2
3. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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("*");
3
4. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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);
4
5. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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]);
5
6. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
}
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;
}
}
}
6
7. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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++)
{
7
8. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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;
8
9. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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("+");
}
9
10. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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");
10
11. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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;
11
12. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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];
12
13. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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>
13
14. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
#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
{
14
15. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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;
15
16. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
}
}
}
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()
16
17. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
{
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;
17
18. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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;
18
19. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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;
}
19
20. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
}
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]);
20
21. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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
21
22. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
{
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;
22
23. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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.
23
24. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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;
24
25. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
}
}
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]);
25
26. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
}
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]);
26
27. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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;
27
28. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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;
28
29. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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];
29
30. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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;
30
31. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
}
}
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);
31
32. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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()
{
32
33. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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;
33
34. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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]);
34
35. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
}
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();
}
35
36. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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);
36
37. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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;
}
37
38. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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;
}
}
38
39. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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)
39
40. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
{
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;
}
}
}
40
41. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
//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++)
{
41
42. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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;
42
43. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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]);
43
44. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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();
44
45. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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");
45
46. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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);
46
47. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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;
47
48. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
}
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;
48
49. [UNIVERSIDAD TECNICA DE AMBATO] 13 de enero de 2012
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();
49