programacion ii
DESCRIPTION
Matrices y ejerciciosTRANSCRIPT
PROGRAMACIÓN II El presente texto ha sido realizado para que el estudiante aprenda a
programar. En los algoritmos contenidos en el texto, utilizamos los
conocimientos previos del estudiante para enlazarlo de manera efectiva con
las técnicas de programación de computadoras bajo un enfoque estrictamente
lógico. Contiene ejercicios cuyo objetivo es el de desarrollar los hábitos de
razonamiento lógico y la capacidad de análisis del estudiante.
Autor: CAROLINA MEJIA
"La mayoría de los programadores no programa porque
espera el sueldo o la adulación del público, si no porque es
muy divertido programar"
Anónimo
PROGRAMACION II
5
5
PROGRAMACION II
6
6
PROGRAMACION II
7
7 MATRICES
Arrays Bidimensionales (Matrices)
Es un arreglo de dos dimensiones. Son estructuras de datos que agrupan muchos datos
del mismo tipo, en donde cada elemento se puede trabajar individualmente y se puede
referenciar con un mismo nombre. Se usan para representar datos que pueden verse
como una tabla con filas y columnas.
Una matriz es un vector de vectores o un también llamado array bidimensional. La manera
de declarar una matriz es c++ es similar a un vector:
int matriz[fils][cols];
int es el tipo de dato, matriz es el nombre del todo el conjunto de datos y debo de
especificar el numero de filas y columnas. Las matrices también pueden ser de distintos
tipos de datos como char, float, double,etc.
Las matrices en c++ se almacenan al igual que los vectores en posiciones consecutivas de
memoria. Usualmente uno se hace la idea que una matriz es como un tablero. Pero
internamente el manejo es como su definición lo indica, un vector de vectores, es decir,
los vectores están uno detrás de los otros juntos.
Es un arreglo rectangular de números. Es decir, matriz es un conjunto ordenado de
números dispuestos en m filas y n columnas Los números que forman la matriz se llaman
elementos de la matriz y los indicamos con letras minúsculas, mientras que los nombres
de las matrices se indican con letras mayúsculas. Las matrices varían en tamaño u orden El
tamaño u orden de una matriz se describe especificando el número de filas o renglones
(líneas horizontales) y columnas (líneas verticales) que aparecen en la matriz. Por lo tanto,
una matriz de orden m x n tiene m filas y n columnas.
Matrices C permite matrices multidimensionales. El formato más sencillo es la matriz
bidimensional. Una matriz bidimensional es un vector de vectores unidimensionales. Las
matrices bidimensionales se declaran utilizando el siguiente formato:
PROGRAMACION II
8
8 tipo Nombre[tamaño_ filas][tamaño_columnas]
Por tanto, para declarar una matriz de enteros bidimensional de tamaño 3 x 4, se debería
escribir:
int Mat[3][4]
A diferencia de otros lenguajes de programación, que utilizan comas para separar las
dimensiones de la matriz, C coloca cada dimensión en distintos corchetes. Las matrices
bidimensionales se almacenan en filas - columnas donde el primer índice indica la fila y el
segundo la columna.
También se pueden inicializar:
int Mat [3] [4] = { 0, 1 , 2 , 4, 5 , 6 , 7 , 8 , 9 , 5 , 8 }; y se representa:
Para acceder a una celda se realiza mediante dos índices, uno para las filas y otro para las
columnas. Si deseamos acceder a la posición 1,2 lo realizaremos de la siguiente manera:
Mat [1] [2] = 20;
Sintaxis
Tipo_datonombre_matriz [índice fila] [índice columna]
Uso
Nombre_matriz [subíndice1] [subíndice2]
int matriz [2][2]
PROGRAMACION II
9
9 char mapa [100][100]
int certamen [60][4]
Declaración e iniciación
int matriz [2][2]={1,2,3,4}
Para referenciar un elemento de la matriz, debe darse un nombre de la matriz y el índice
de la fila y de la columna que el elemento ocupa en dicha matriz. Es importante que los
índices de las matrices tanto de las filas como de las columnas empezar en 0 y terminan
en tamaño fila-1 y tamaño columna-1 respectivamente.
PROGRAMACION II
10
10
PROGRAMACION II
11
11
PROGRAMACION II
12
12
PROGRAMACION II
13
13 EJERCICIOS
1. Diseñe un programa que me permita ingresar n elementos en una matriz
cuadrática entre 5 y 23, utilizando funciones.
Análisis:
El presente programa nos permitirá ingresar n datos en una matriz cuadrática, el
mismo que deben estar entre 5 y 23, una vez ingresada la matriz se visualizara.
Este proceso se repite n veces. Este programa cuenta con 3 funciones (o
subprogramas), que se encargan de procesos específicos, la función borde se
encarga se realizar un margen en pantalla, la función entrada se encarga de
permitir el ingreso de datos a la matriz con su respectiva validación y la función
visualizar es la que se encarga de imprimir la matriz ingresada.
Desarrollo:
#include<conio.h>
#include<stdio.h>
int matriz[10][10],i,j,k,col,fila,limite,op;
void borde()
{
for(k=1;k<=80;k++)
{
gotoxy(k,1);printf("&");
gotoxy(k,24);printf("&");
}
for(k=1;k<=24;k++)
{
gotoxy(1,k);printf("&");
gotoxy(80,k);printf("&");
}
}
void entrada(int limi)
{
col=10;
fila=10;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
Librerías Principales
Declaración de Variables Globales
Función borde: Esta función es un
subprograma que realizara un borde
en pantalla, para lo cual estamos
utilizando dos ciclos FOR los cuales
van a permitir que se realice el
borde.
Función entrada: Esta función
es un subprograma que
realizara el ingreso de datos
validando los mismos entre 5 y
23.
PROGRAMACION II
14
14 {
do
{
gotoxy(col,fila);printf(" ");
gotoxy(col,fila);scanf("%d",&matriz[i][j]);
}
while(matriz[i][j]<5 || matriz[i][j]>23);
col=col+5;
}
fila=fila+1;
col=10;
}
}
void visualizar(int limi)
{
col=35;
fila=10;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
gotoxy(col,fila);printf("%d",matriz[i][j]);
col=col+5;
}
fila=fila+1;
col=35;
}
}
void main()
{
do
{
clrscr();
borde();
gotoxy(30,4);printf("Ejercicios con Matrices");
gotoxy(10,6);printf("Limite:");scanf("%d",&limite);
entrada(limite);
visualizar(limite);
gotoxy(20,22);printf("Desea continuar SI(1)-NO(0) ==> ");scanf("%d",&op);
}
Función visualizar: Esta
función es un subprograma
que realizara la impresión
de los datos ingresados.
Inicio del programa principal
Inicio del lazo Do para
generar el programa n
veces. Blanqueo de pantalla
Llamado a la función borde
Llamado a las funciones
Función entrada: Esta función
es un subprograma que
realizara el ingreso de datos
validando los mismos entre 5 y
23.
PROGRAMACION II
15
15 while(op==1);
getch();
}
Ejecución:
“Pantalla 1: Ingreso del limite”
“Pantalla 2: Ingreso de la matriz”
Fin del programa
Cierre del lazo Do while
para generar n veces el
programa
PROGRAMACION II
16
16
“Pantalla 3: Visualización de la matriz”
2. Diseñe un programa que me permita leer una cadena de caracteres y encontrar
todas las que sean vocales, pasarlas a un nuevo vector en forma ordenada.
Análisis:
El presente programa nos permitirá leer una cadena de caracteres desde teclado,
una vez ingresado realizara un proceso en el que tomara solo las vocales de la
cadena ingresada y las guardara en un vector, el cual deberá ser presentado en
forma ordenada (a, e, i, o, u). Este programa se realizara las veces que el usuario lo
desee.
Desarrollo:
#include<conio.h>
#include<stdio.h>
#include<string.h>
void borde()
{
int j;
for(j=1;j<80;j++)
{
gotoxy(j,1);printf("*");
gotoxy(j,24);printf("*");
}
for(j=1;j<24;j++)
Librerías Principales
Función borde: Esta función es un
subprograma que realizara un borde
en pantalla, para lo cual estamos
utilizando dos ciclos FOR los cuales
van a permitir que se realice el
borde.
PROGRAMACION II
17
17 {
gotoxy(1,j);printf("*");
gotoxy(80,j);printf("*");
}
}
void main()
{
int col=20,fila=9,limi,op,i,a,x=0,h,aux;
char nom[15];
char vec[20];
do
{
x=0;
clrscr();
borde();
gotoxy(30,5);printf("VECTORES CON CARACTERES");
gotoxy(5,7);printf("Nombre: ");
flushall();
gets(nom);
limi=strlen(nom);
for(i=0;i<limi;i++)
{
if(nom[i]=='a')
{
vec[x]=nom[i];
x=x+1;
}
if(nom[i]=='e')
{
vec[x]=nom[i];
x=x+1;
}
if(nom[i]=='i')
{
vec[x]=nom[i];
x=x+1;
}
if(nom[i]=='o')
{
vec[x]=nom[i];
x=x+1;
Declaración de Variables locales
Inicio del programa principal
Inicio del lazo Do para
generar el programa n
veces.
Blanqueo de pantalla
Llamado a la función borde
Proceso para guardar solo las vocales en el vector.
PROGRAMACION II
18
18 }
if(nom[i]=='u')
{
vec[x]=nom[i];
x=x+1;
}
}
for(i=0;i<x;i++)
{
for(h=0;h<x;h++)
{
if(vec[i]<vec[h])
{
aux=vec[i];
vec[i]=vec[h];
vec[h]=aux;
}
}
}
for(i=0;i<x;i++)
{
gotoxy(col,fila);printf("%c",vec[i]);
fila=fila+1;
}
col=40;
fila=9;
gotoxy(20,20);printf("Desea continuar (1) - finalizar (0) ===> ");scanf("%d",&op);
}
while(op==1);
getch();
}
Ejecución:
Fin del programa
Cierre del lazo Do while
para generar n veces el
programa
Proceso para visualizar los datos ordenados del vector.
Proceso para ordenar los datos almacenados en el vector.
PROGRAMACION II
19
19
“Pantalla Principal”
“Pantalla 1: Ingreso de la cadena de caracteres”
PROGRAMACION II
20
20
“Pantalla 2: Visualización del vector resultantes”
3. Diseñe un programa que me permita leer una cadena de caracteres y encontrar
todas las que sean consonantes, pasarlas a un nuevo vector y presentarlos en
forma ordenada.
Análisis:
El presente programa nos permitirá leer una cadena de caracteres desde teclado,
una vez ingresado realizara un proceso en el que tomara solo las consonantes de la
cadena ingresada y las guardara en un vector, el cual deberá ser presentado en
forma ordenada. Este programa se realizara las veces que el usuario lo desee. Este
programa cuenta con dos funciones (o subprogramas), la función borde realizara
un margen en pantalla y la función consonantes la misma que se encargara de
todo el proceso situado anteriormente.
Desarrollo:
#include<conio.h>
#include<stdio.h>
#include<string.h>
void borde()
{
int j;
for(j=1;j<80;j++)
Librerías Principales
PROGRAMACION II
21
21 {
gotoxy(j,1);printf("*");
gotoxy(j,24);printf("*");
}
for(j=1;j<24;j++)
{
gotoxy(1,j);printf("*");
gotoxy(80,j);printf("*");
}
}
void consonantes()
{
int cadena,i,fil,aux,h,j;
char vector1[20],vector2[20];
fil=8;
j=0;
gotoxy(30,5);printf("CADENA DE CONSONANTES");
gotoxy(9,7);printf("Nombre: ");
flushall();
gets(vector1);
cadena=strlen(vector1);
for(i=0;i<cadena;i++)
{
if(vector1[i]!='a'&&vector1[i]!='e'&&vector1[i]!='i'&&vector1[i]!='o'&&vector1[i]!='u')
{
vector2[j]=vector1[i];
j=j+1;
}
}
for(i=0;i<j;i++)
{
for(h=0;h<j;h++)
{
if(vector2[i]<vector2[h])
{
aux=vector2[i];
vector2[i]=vector2[h];
vector2[h]=aux;
}
}
}
Declaración de Variables Locales
Proceso para ordenar los datos almacenados en el vector.
Función consonantes
Función borde: Esta función es un
subprograma que realizara un borde
en pantalla, para lo cual estamos
utilizando dos ciclos FOR los cuales
van a permitir que se realice el
borde.
PROGRAMACION II
22
22 fil=10;
for(i=0;i<j;i++)
{
gotoxy(24,fil);printf("%c", vector2[i]);
fil=fil+1;
}
}
void main()
{
int op;
do
{
clrscr();
borde();
consonantes();
gotoxy(20,22);printf("Desea continuar SI(1)-NO(0) ==> ");scanf("%d",&op);
}
while(op==1);
getch();
}
Ejecución:
“Pantalla Principal”
Inicio del programa principal
Inicio del lazo Do para
generar el programa n veces.
Fin del programa
Cierre del lazo Do while
para generar n veces el
programa
Proceso para visualizar los datos ordenados del vector.
Blanqueo de pantalla
Llamado a la función borde
Llamado a la función consonantes
PROGRAMACION II
23
23
“Pantalla 1: Ingreso de la cadena de caracteres”
“Pantalla 2: Visualización del vector resultantes”
PROGRAMACION II
24
24 4. Diseñe un programa utilizando funciones que me permita diseñar un menú de
opciones con las siguientes alternativas:
Cadena con vocales
Cadena con consonantes
Salir
Análisis:
El presente programa nos muestra un menú de opciones acerca de cadena de
caracteres; la primera opción: 1. Cadena con vocales.- es un programa que nos
permitirá leer una cadena de caracteres desde teclado, una vez ingresado realizara
un proceso en el que tomara solo las vocales de la cadena ingresada y las guardara
en un vector, el cual deberá ser presentado en forma ordenada (a, e, i, o, u). 2.
Cadena con consonantes.- es un programa que nos permitirá leer una cadena de
caracteres desde teclado, una vez ingresado realizara un proceso en el que tomara
solo las consonantes de la cadena ingresada y las guardara en un vector, el cual
deberá ser presentado en forma ordenada. Este programa se realizara las veces
que el usuario lo desee. 3. Salir.- esta opción nos permitirá abandonar el programa.
Desarrollo:
#include<conio.h>
#include<stdio.h>
#include<string.h>
void borde()
{
int j;
for(j=1;j<80;j++)
{
gotoxy(j,1);printf("*");
gotoxy(j,24);printf("*");
}
for(j=1;j<24;j++)
{
gotoxy(1,j);printf("*");
gotoxy(80,j);printf("*");
Librerías Principales
Función borde: Esta función es un
subprograma que realizara un borde
en pantalla, para lo cual estamos
utilizando dos ciclos FOR los cuales
van a permitir que se realice el
borde.
PROGRAMACION II
25
25 }
}
void vocales()
{
int col=20,fila=9,limi,i,x=0,h,aux;
char nom[15];
char vec[20];
x=0;
gotoxy(30,5);printf("CADENA CON VOCALES");
gotoxy(5,7);printf("Nombre: ");
flushall();
gets(nom);
limi=strlen(nom);
for(i=0;i<limi;i++)
{
if(nom[i]=='a')
{
vec[x]=nom[i];
x=x+1;
}
if(nom[i]=='e')
{
vec[x]=nom[i];
x=x+1;
}
if(nom[i]=='i')
{
vec[x]=nom[i];
x=x+1;
}
if(nom[i]=='o')
{
vec[x]=nom[i];
x=x+1;
}
if(nom[i]=='u')
{
vec[x]=nom[i];
x=x+1;
}
}
Función vocales: Esta función es un
subprograma que nos permitirá
guardar las vocales de una cadena
de caracteres en un vector y
ordenarlos.
PROGRAMACION II
26
26
for(i=0;i<x;i++)
{
for(h=0;h<x;h++)
{
if(vec[i]<vec[h])
{
aux=vec[i];
vec[i]=vec[h];
vec[h]=aux;
}
}
}
for(i=0;i<x;i++)
{
gotoxy(col,fila);printf("%c",vec[i]);
fila=fila+1;
}
col=40;
fila=9;
}
void consonantes()
{
int cadena,i,fil,aux,h,j;
char vector1[20],vector2[20];
fil=8;
j=0;
gotoxy(30,5),printf("CADENA DE CONSONANTES");
gotoxy(9,7),printf("Nombre: ");
flushall();
gets(vector1);
cadena=strlen(vector1);
for(i=0;i<cadena;i++)
{
if(vector1[i]!='a'&&vector1[i]!='e'&&vector1[i]!='i'&&vector1[i]!='o'&&vector1[i]!='u')
{
vector2[j]=vector1[i];
j=j+1;
}
}
Función vocales: Esta función es un
subprograma que nos permitirá
guardar las vocales de una cadena
de caracteres en un vector y
ordenarlos.
Función consonantes: Esta
función es un subprograma que
nos permitirá guardar las
consonantes de una cadena de
caracteres en un vector y
ordenarlos.
PROGRAMACION II
27
27
for(i=0;i<j;i++)
{
for(h=0;h<j;h++)
{
if(vector2[i]<vector2[h])
{
aux=vector2[i];
vector2[i]=vector2[h];
vector2[h]=aux;
}
}
}
fil=8;
for(i=0;i<j;i++)
{
gotoxy(24,fil);printf("%c", vector2[i]);
fil=fil+1;
}
}
void main()
{
int op,op1;
do
{
clrscr();
borde();
gotoxy(30,5);printf("MENU");
gotoxy(25,7);printf("1. Vocales");
gotoxy(25,8);printf("2. Consonantes");
gotoxy(25,9);printf("3. Salir");
gotoxy(25,10);printf("Elija la Opcion: ");scanf("%d",&op);
switch(op)
{
case 1:
clrscr();
borde();
vocales();
break;
case 2:
clrscr();
Inicio del programa principal
Inicio del lazo Do para
generar el programa n
veces.
Función consonantes: Esta
función es un subprograma que
nos permitirá guardar las
consonantes de una cadena de
caracteres en un vector y
ordenarlos.
Blanqueo de pantalla
Llamado a la función borde
Opción 1: Cadena con vocales
PROGRAMACION II
28
28 borde();
consonantes();
break;
case 3:
exit();
break;
}
gotoxy(20,22);printf("Desea continuar SI(1)-NO(0)==> ");scanf("%d",&op1);
}
while(op1==1);
getch();
}
Ejecución:
“Pantalla Principal: MENU”
Cierre del lazo Do while
para generar n veces el
programa Fin del programa
Opción 3: Salir del programa
Opción 2: Cadena con consonantes
PROGRAMACION II
29
29
“Pantalla 1: Selección de opciones”
“Pantalla 2: Cadena con vocales”
PROGRAMACION II
30
30
“Pantalla 3: Visualización del vector resultante - vocales”
“Pantalla 4: Selección de opciones”
PROGRAMACION II
31
31
“Pantalla 5: Cadena con consonantes”
“Pantalla 6: Visualización del vector resultante - consonantes”
PROGRAMACION II
32
32 5. Diseñe un programa utilizando matrices y funciones que me permita generar una
matriz de cualquier orden con cualquier factor ingresado desde teclado.
Análisis:
El presente programa nos permite generar una matriz cuadrática de cualquier
orden, llenándola con valores de acuerdo al factor ingresado desde teclado. Este
proceso se repite la s veces que el usuario lo desee.
Desarrollo:
#include<conio.h>
#include<stdio.h>
int k,limite,matriz[10][10],i,j,a,col=5,fila=11,op,fac;
void borde()
{
for(k=1;k<=80;k++)
{
gotoxy(k,1);printf("&");
gotoxy(k,24);printf("&");
}
for(k=1;k<=24;k++)
{
gotoxy(1,k);printf("&");
gotoxy(80,k);printf("&");
}
}
void factores(int limi,int f)
{
int t,con=1;
col=15;
fila=11;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
t=f*con;
matriz[i][j]=t;
con=con+1;
gotoxy(col,fila);printf("%d",matriz[i][j]);
col=col+5;
}
fila=fila+1;
Librerías Principales
Declaración de Variables Globales
Función borde: Esta función es un
subprograma que realizara un borde en
pantalla, para lo cual estamos utilizando
dos ciclos FOR los cuales van a permitir
que se realice el borde.
Función factores: Esta función es un
subprograma que nos permitirá llenar
una matriz de acuerdo a un factor
ingresado desde teclado.
PROGRAMACION II
33
33 col=15;
}
}
void main()
{
do
{
clrscr();
borde();
gotoxy(30,5);printf("MATRIZ");
gotoxy(15,7);printf("Limite: ");scanf("%d",&limite);
gotoxy(15,8);printf("Factor: ");scanf("%d",&fac);
factores(limite,fac);
gotoxy(20,22);printf("Desea Continuar SI(1)-NO(0) ==> ");scanf("%d",&op);
}
while(op==1);
getch();
}
Ejecución:
“Pantalla Principal”
Inicio del programa principal
Inicio del lazo Do para generar el
programa n veces.
Cierre del lazo Do while
para generar n veces el
programa
Blanqueo de pantalla
Llamado a la función borde
Llamado a la función factores
Fin del programa
PROGRAMACION II
34
34
“Pantalla 1: Ingreso del limite y del factor”
“Pantalla 2: Matriz generada”
6. Diseñe un programa, que llene una matriz de cualquier orden con valores pares.
Análisis:
PROGRAMACION II
35
35 El presente programa nos permite generar una matriz cuadrática de cualquier
orden, llenándola con valores pares de acuerdo al límite ingresado desde teclado.
Este proceso se repite las veces que el usuario lo desee.
Desarrollo:
#include<conio.h>
#include<stdio.h>
int matriz[20][20],k,i,j,col,fila,limite,op,t=2;
void borde()
{
for(k=1;k<=80;k++)
{
gotoxy(k,1);printf("&");
gotoxy(k,24);printf("&");
}
for(k=1;k<=24;k++)
{
gotoxy(1,k);printf("&");
gotoxy(80,k);printf("&");
}
}
void ingreso(int limi)
{
col=20;
fila=8;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
matriz[i][j]=t;
gotoxy(col,fila);printf("%d",matriz[i][j]);
t=t+2;
col=col+4;
}
fila=fila+1;
col=20;
}
}
Librerías Principales
Declaración de Variables Globales
Función borde: Esta función es un
subprograma que realizara un borde en
pantalla, para lo cual estamos utilizando
dos ciclos FOR los cuales van a permitir
que se realice el borde.
Función ingreso: Esta función es un
subprograma que me permitirá llenar
una matriz solo con valores pares.
PROGRAMACION II
36
36 void main()
{
do
{
clrscr();
borde();
t=2;
fila=8;
col=20;
gotoxy(30,4);printf("MATRIZ CON NUMEROS PARES");
gotoxy(8,6);printf("Limite: ");scanf("%d",&limite);
ingreso(limite);
gotoxy(20,22);printf("Desea Continuar SI(1)-NO(0) ==> ");scanf("%d",&op);
}
while(op==1);
getch();
}
Ejecución:
“Pantalla Principal”
Inicio del programa principal
Inicio del lazo Do para generar el
programa n veces.
Blanqueo de pantalla
Llamado a la función borde
Llamado a la función
ingreso
Cierre del lazo Do while
para generar n veces el
programa Fin del programa
PROGRAMACION II
37
37
“Pantalla 1: Ingreso del limite”
“Pantalla 2: Matriz generada con valores pares”
7. Diseñe un programa utilizando matrices y funciones que me permita llenar una
matriz con valores ceros (0) a excepción de sus diagonales principales y
secundarias, la misma que se llena con valores pares la diagonal principal y con
valores impares la diagonal secundaria, guarde los datos de las diagonales en un
vector, presente la matriz original, sus diagonales en forma de X, el vector
original y el vector resultante ordenado.
PROGRAMACION II
38
38 Análisis:
El presente programa nos permite generar una matriz cuadrática de cualquier
orden, llenándola con valores ceros (0) toda la matriz, pero en las diagonales se
llenaran otros valores; en la diagonal principal se llenaran valores pares las mismas
que se guardaran en un vector, se lo ordenara y se visualizara, el vector original,
ordenado y la diagonal. Lo mismo sucederá con la diagonal secundaria solo que en
esta se llenan con valores impares los valores se guardan en un vector se imprime
y ordena. Este proceso se realiza n veces.
Desarrollo:
#include<conio.h>
#include<stdio.h>
int k=1,matriz[10][10],limite,fac,i,j,t,col,fila;
int con=1,h,m,aux,vector[10],op,x,b,y,d;
void borde()
{
for(k=1;k<=80;k++)
{
gotoxy(k,1);printf("&");
gotoxy(k,24);printf("&");
}
for(k=1;k<=24;k++)
{
gotoxy(1,k);printf("&");
gotoxy(80,k);printf("&");
}
}
void ingreso(int limi)
{
col=8;fila=11;
x=2;
b=0;
d=1;
y=limite;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
Librerías Principales
Declaración de Variables Globales
Función borde: Esta función es un
subprograma que realizara un borde en
pantalla, para lo cual estamos utilizando
dos ciclos FOR los cuales van a permitir
que se realice el borde.
PROGRAMACION II
39
39 if(i==j)
{
matriz[i][j]=x;
gotoxy(col,fila);printf("%d", matriz[i][j]);
x=x+2;
}
else
{
if(y==j)
{
matriz[i][j]=d;
gotoxy(col,fila);printf("%d", matriz[i][j]);
d=d+2;
}
else
{
matriz[i][j]=b;
gotoxy(col,fila);printf("%d", matriz[i][j]);
}
}
col=col+3;
}
col=8;
y=y--;
fila=fila+2;
}
}
void diagonal(int limi)
{
col=35;
fila=12;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
if(i==j)
{
gotoxy(col,fila);printf("%d",matriz[i][j]);
vector[k]=matriz[i][j];
k=k+1;
Función ingreso: Esta función es
un subprograma que me
permitirá llenar una matriz solo
con valores ceros a excepción de
las diagonales principal y
secundaria que se llenan con
valores pares e impares
respectivamente..
Función diagonal: Esta función es
un subprograma que me
permitirá visualizar la diagonal
principal en forma de diagonal.
PROGRAMACION II
40
40 }
col=col+5;
}
fila=fila+1;
col=35;
}
}
void secundaria(int limi)
{
col=35;
fila=12;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
if(i + j == limi + 1)
{
gotoxy(col,fila);printf("%d",matriz[i][j]);
vector[k]=matriz[i][j];
k=k+1;
}
col=col+5;
}
fila=fila+1;
col=35;
}
}
void ordenar()
{
for(h=1;h<k;h++)
{
for(m=1;m<k;m++)
{
if(vector[h]<vector[m])
{
aux=vector[h];
vector[h]=vector[m];
vector[m]=aux;
}
}
Función secundaria: Esta función
es un subprograma que me
permitirá visualizar la diagonal
secundaria en forma de diagonal.
Función diagonal: Esta función es
un subprograma que me
permitirá visualizar la diagonal
principal en forma de diagonal.
Función ordenar: Esta función es
un subprograma que me
permitirá ordenar los datos
guardados en el vector
PROGRAMACION II
41
41 }
}
void visualizar()
{
fila=12;
for(i=1;i<k;i++)
{
gotoxy(67,fila);printf("%d",vector[i]);
fila=fila+1;
}
}
void main()
{
do
{
clrscr();
borde();
k=1;
fila=12;
col=10;
con=1;
gotoxy(30,5);printf("MATRICES");
gotoxy(15,7);printf("Limite: ");scanf("%d",&limite);
gotoxy(10,9);printf("MATRIZ");
gotoxy(38,10);printf("DIAGONALES");
gotoxy(65,10);printf("V.ORD");
ingreso(limite);
diagonal(limite);
secundaria(limite);
ordenar();
visualizar();
gotoxy(20,22);printf("Desea continuar SI(1)-NO(0) ==> ");scanf("%d",&op);
}
while(op==1);
getch();
}
Inicio del programa principal
Inicio del lazo Do para
generar el programa n veces.
Función visualizar: Esta función
es un subprograma que me
permitirá visualizar el vector
resultante.
Cierre del lazo Do while
para generar n veces el
programa Fin del programa
Blanqueo de pantalla
Llamado a la función borde
Llamado a las funciones
PROGRAMACION II
42
42
Ejecución:
“Pantalla Principal”
“Pantalla 1: Ingreso del limite”
PROGRAMACION II
43
43
“Pantalla 2: Resultados”
8. Diseñe un programa utilizando matrices y funciones que lea una matriz de
enteros de n número de filas y n numero de columnas, y se visualice en pantalla
la matriz transpuesta.
Análisis:
El presente programa nos permitirá llenar una matriz con números enteros
ingresados desde teclado, para esto también necesitaremos ingresar por separado
un limite de filas y de columnas, de esta manera ingresada la matriz, esta se
visualizara transpuesta (las filas ingresadas se convertirán en columnas y
viceversa). Este proceso se realizara n veces.
Desarrollo:
#include<stdio.h>
#include<conio.h>
int matriz1[10][10],matriz2[10][10];
int col,fil,i,j,op,fila,colum,a,b;
void borde()
{
for(i=1;i<=80;i++)
{
gotoxy(i,1);printf("*");
gotoxy(i,24);printf("*");
Librerías Principales
Declaración de Variables Globales
PROGRAMACION II
44
44
}
for(i=1;i<=24;i++)
{
gotoxy(1,i);printf("*");
gotoxy(80,i);printf("*");
}
}
void ingresar (int a,int b)
{
fila=10;
col=10;
for(i=1;i<=a;i++)
{
for(j=1;j<=b;j++)
{
gotoxy(col,fila);scanf("%d",&matriz1[i][j]);
matriz2[j][i]=matriz1[i][j];
col=col+3;
}
col=10;
fila=fila+2;
}
}
void traspaso(int a,int b)
{
fila=10;
col=39;
for(i=1;i<=b;i++)
{
for(j=1;j<=a;j++)
{
gotoxy(col,fila);printf("%d",matriz2[i][j]);
col=col+3;
}
fila=fila+2;
col=39;
}
}
Función borde: Esta función
es un subprograma que
realizara un borde en
pantalla, para lo cual estamos
utilizando dos ciclos FOR los
cuales van a permitir que se
realice el borde.
Función ingreso: Esta función es
un subprograma que me
permitirá ingresar datos enteros
en una matriz.
Función traspaso: Esta función es
un subprograma que me
permitirá transponer la matriz
ingresada.
PROGRAMACION II
45
45
void main ()
{
do
{
clrscr();
borde();
gotoxy(30,2);printf("MATRIZ TRANSPUESTA");
gotoxy(10,4);printf("Filas: ");scanf("%d",&fil);
gotoxy(10,5);printf("Columnas: ");scanf("%d",&colum);
ingresar(fil,colum);
traspaso(fil,colum);
gotoxy(20,22);printf("² Desea continuar SI(1)-NO(0)==> ");scanf("%d",&op);
}
while(op==1);
getch();
}
Ejecución:
“Pantalla 1: Ingreso de filas y columnas”
Inicio del programa principal
Blanqueo de pantalla
Inicio del lazo Do para
generar el programa n veces.
Llamado a la función borde
Llamado a las funciones
Cierre del lazo Do while
para generar n veces el
programa Fin del programa
PROGRAMACION II
46
46
“Pantalla 2: Ingreso de datos en la matriz”
“Pantalla 3: Matriz Transpuesta”
9. Diseña un programa en C que permita llenar una matriz de N elementos con
valores 0 y la diagonal principal con la Serie del Fibonacci, la diagonal secundaria
con el factorial, se visualizan todos los datos en la matriz, presenta los datos de
las diagonales en forma de X.
PROGRAMACION II
47
47
Análisis:
Este programa nos permitirá obtener una matriz la misma que contara con
diagonales tanto principal como secundaria, las mismas que estarán llenadas con
la serie fibonacci la diagonal principal y con el factorial de un numero la diagonal
secundaria. Esto se obtendrá mediante el ingreso de un límite, que será quien
manipule la matriz cuadrática. Como resultado nos dará la matriz completa llena
con valores ceros (0) a excepción de sus diagonales, así también como las
visualización de las diagonales en forma de X.
Desarrollo:
#include<conio.h>
#include<stdio.h>
int matriz[15][15],i,j,k,limite,a,b,c,t,factorial,m,op,col,fila;
void borde()
{
for(k=1;k<=80;k++)
{
gotoxy(k,1);printf("&");
gotoxy(k,24);printf("&");
}
for(k=1;k<=24;k++)
{
gotoxy(1,k);printf("&");
gotoxy(80,k);printf("&");
}
}
void ingreso(int limi)
{
col=15;
fila=8;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
Librerías Principales
Declaración de Variables Globales
Función borde: Esta función es un
subprograma que realizara un borde en
pantalla, para lo cual estamos utilizando
dos ciclos FOR los cuales van a permitir
que se realice el borde.
Función ingreso: Esta función
es un subprograma que llenara
de ceros la matriz cuadrática.
PROGRAMACION II
48
48 t=0;
matriz[i][j]=t;
gotoxy(col,fila);printf("%d",matriz[i][j]);
col=col+4;
}
fila=fila+2;
col=15;
}
}
void principal(int limi)
{
col=15;
fila=8;
a=1;
b=0;
c=0;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
if(i==j)
{
c = a+b;
a = b;
b = c;
matriz[i][j]=c;
gotoxy(col,fila);printf("%d",matriz[i][j]);
}
col=col+4;
}
fila=fila+2;
col=15;
}
}
void secundaria(int limi)
{
Función ingreso: Esta función
es un subprograma que
llenara de ceros la matriz
cuadrática.
Función principal: Esta
función es un subprograma
que llenara la diagonal
principal con la serie del
fibonacci.
PROGRAMACION II
49
49 col=15;
fila=8;
factorial=1;
m=limite;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
if(m==j)
{
factorial=factorial*i;
matriz[i][j]=factorial;
gotoxy(col,fila);printf("%d",matriz[i][j]);
m=m-1;
}
col=col+4;
}
fila=fila+2;
col=15;
}
}
void principal1(int limi)
{
col=40;
fila=8;
a=1;
b=0;
c=0;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
if(i==j)
{
c = a+b;
a = b;
b = c;
Función principal1: Esta
función es un subprograma
visualizara la diagonal principal
en forma de x.
Función secundaria Esta
función es un subprograma
que llenara la diagonal
secundaria con el factorial de
un número.
PROGRAMACION II
50
50 matriz[i][j]=c;
gotoxy(col,fila);printf("%d",matriz[i][j]);
}
col=col+2;
}
fila=fila+1;
col=40;
}
}
void secundaria1(int limi)
{
col=40;
fila=8;
factorial=1;
m=limite;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
if(m==j)
{
factorial=factorial*i;
matriz[i][j]=factorial;
gotoxy(col,fila);printf("%d",matriz[i][j]);
m=m-1;
}
col=col+2;
}
fila=fila+1;
col=40;
}
}
void main()
{
do
{
Inicio del programa principal
Inicio del lazo Do para generar el
programa n veces.
Función secundaria1: Esta función
es un subprograma visualizara la
diagonal secundaria en forma de x.
PROGRAMACION II
51
51
clrscr();
borde();
gotoxy(25,4);printf("MATRIZ:DIAGONALES PRINCIPAL-SECUNDARIA");
gotoxy(8,6);printf("Limite: ");scanf("%d",&limite);
ingreso(limite);
principal(limite);
secundaria(limite);
principal1(limite);
secundaria1(limite);
gotoxy(15,20);printf("Desea Continuar SI(1)-NO(0) ==> ");scanf("%d",&op);
}
while(op==1);
getch();
}
Ejecución:
“Pantalla principal”
Llamado a la función borde
Blanqueo de pantalla
Llamado a las funciones
Cierre del lazo Do while para
generar n veces el programa
Fin del programa
PROGRAMACION II
52
52
“Pantalla 2: Ingrese el límite”
“Pantalla 3: Se genera la matriz”
10. Diseñe un programa que permita generar una matriz cuadrática con números
primos.
Análisis:
Este programa nos permitirá generar una matriz cuadrática con números primos,
tras el ingreso de un límite, la matriz se genera sola y se empezara a llenar de
PROGRAMACION II
53
53 datos. Para ello hemos utilizado una función que se encargara de este proceso. La
función primos lleva como estructura dos lazos for quienes se encargan de recorrer
la matriz, un lazo DO-WHILE que se encargara de realizar la comprobación si un
numero es primo o no, dentro de este lazo encontramos otro ciclo FOR que será
quien genera los números primos, un IF quien se encargara de ir verificando que el
numero se divisible para si mismo como para la unidad. Este proceso se realiza n
veces según como el usuario lo desee.
Desarrollo:
#include<conio.h>
#include<stdio.h>
int matriz[20][20],i,j,c,limite,k,op,col,fila,h,primo,sw;
void borde()
{
for(k=1;k<=80;k++)
{
gotoxy(k,1);printf("&");
gotoxy(k,24);printf("&");
}
for(k=1;k<=24;k++)
{
gotoxy(1,k);printf("&");
gotoxy(80,k);printf("&");
}
}
void primos(int limi)
{
col=10;
fila=8;
c=0;
primo=1;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
do
Librerías Principales
Declaración de Variables Globales
Función borde: Esta función es
un subprograma que realizara
un borde en pantalla, para lo
cual estamos utilizando dos
ciclos FOR los cuales van a
permitir que se realice el
borde.
PROGRAMACION II
54
54 {
c=0;
sw=0;
for(h=1;h<=primo;h++) /*generar numeros primos*/
{
if(primo%h==0)
{
c=c+1;
}
}
if(c<=2)
{
matriz[i][j]=primo;
primo=primo+1;
sw=1;
gotoxy(col,fila);printf("%d",matriz[i][j]);
}
else
{
sw=0;
primo=primo+1;
}
}
while(sw==0);
col=col+4;
}
fila=fila+2;
col=10;
}
}
void main()
{
do
{
clrscr();
borde();
gotoxy(30,4);printf("MATRIZ DE NUMEROS PRIMOS");
Inicio del lazo Do para
generar el programa n veces.
Inicio del programa principal
Blanqueo de pantalla
Llamado a la función borde
Función primos: Esta función
es un subprograma que
llenara la matriz con números
primos.
PROGRAMACION II
55
55 gotoxy(8,6);printf("Limite: ");scanf("%d",&limite);
primos(limite);
gotoxy(15,20);printf("Desea Continuar SI(1)-NO(0) ==> ");scanf("%d",&op);
}
while(op==1);
getch();
}
Ejecución:
“Pantalla principal”
“Pantalla 2: Ingrese el límite”
Fin del programa
Cierre del lazo Do while para
generar n veces el programa
Llamado a las funciones
PROGRAMACION II
56
56
“Pantalla3: Se genera la matriz con números primos”
11. Diseñe un programa que permita ingresar n elementos en una matriz entre 3 y
36 presentar la matriz resultante ordenada en forma ascendente.
Análisis:
Este programa nos permitirá ingresar datos en una matriz con valores entre 3 y 36,
esta matriz será luego visualizada en orden ascendente. Para ello hemos empleado
tres funciones que nos permitirán tener el ingreso, ordenamiento y visualización.
La función ingreso nos permitirá ingresar datos a nuestra matriz. La función
ordenar realizara el proceso para ordenar toda la matriz en forma ascendente por
medio de una variable auxiliar que guardara e intercambiara los datos. La función
imprimir permitirá visualizar la matriz ya ordenada.
Desarrollo:
#include<conio.h>
#include<stdio.h>
int k,i,j,limite,op,matriz[20][20],col,fila,x,y,aux,a,b;
void borde()
{
for(k=1;k<=80;k++)
{
gotoxy(k,1);printf("&");
Librerías Principales
Declaración de Variables Globales
PROGRAMACION II
57
57 gotoxy(k,24);printf("&");
}
for(k=1;k<=24;k++)
{
gotoxy(1,k);printf("&");
gotoxy(80,k);printf("&");
}
}
void ingreso(int limi)
{
col=10;
fila=10;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
do
{
gotoxy(col,fila);printf(" ");
gotoxy(col,fila);scanf("%d",&matriz[i][j]);
}
while(matriz[i][j] < 3 || matriz[i][j]>36 );
col=col+4;
}
fila=fila+1;
col=10;
}
}
void ordenar(int limi)
{
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
for(x=1;x<=limi;x++)
Función ingreso: Esta función
es un subprograma que valida
el ingreso de datos en la
matriz, la condición DO-WHILE
permitirá que el ingreso de
datos entre 3 y 36.
Función borde: Esta función es
un subprograma que realizara
un borde en pantalla, para lo
cual estamos utilizando dos
ciclos FOR los cuales van a
permitir que se realice el borde.
PROGRAMACION II
58
58 {
for(y=1;y<=limi;y++)
{
if(matriz[i][j]<matriz[x][y])
{
aux=matriz[i][j];
matriz[i][j]=matriz[x][y];
matriz[x][y]=aux;
}
}
}
}
}
}
void imprimir(int limi)
{
col=35;
fila=10;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
gotoxy(col,fila);printf("%d",matriz[i][j]);
col=col+4;
}
fila=fila+1;
col=35;
}
}
void main()
{
do
{
clrscr();
borde();
gotoxy(30,5);printf("MATRIZ ORDENADA - ASCENDENTE");
Inicio del lazo Do para generar el
programa n veces.
Inicio del programa principal
Blanqueo de pantalla
Llamado a la función borde
Función ordenar: Esta función es un
subprograma para ordenar los
elementos de la matriz de entrada. Para
lo cual utilizamos cuatro ciclos FOR (los
dos primeros lazos FOR recorren la
matriz, mientras que los dos otros
ordenaran la matriz) y un IF, así también
como una variable auxiliar para
almacenar los datos e intercambiarlos.
Función imprimir: Esta función es
un subprograma para visualizar la
matriz de entrada en forma
ascendente.
PROGRAMACION II
59
59 gotoxy(15,7);printf("Limite: ");scanf("%d",&limite);
ingreso(limite);
ordenar(limite);
imprimir(limite);
gotoxy(15,20);printf("Desea Continuar SI(1)-NO(0) ==> ");scanf("%d",&op);
}
while(op==1);
getch();
}
Ejecución:
“Pantalla principal”
“Pantalla 2: Ingrese el límite”
Fin del programa
Cierre del lazo Do while para
generar n veces el programa
Llamado a las funciones
PROGRAMACION II
60
60
“Pantalla3: Ingreso de la matriz”
“Pantalla 4: Matriz ordenada de forma ascendente”
12. Diseñe un programa utilizando matrices y funciones, que me permita generar
una matriz con ceros (0) solo las diagonales principales y secundaria las demás
posiciones se muestran vacías.
Análisis:
Este programa nos permitirá obtener una matriz cuadrática de cualquier orden la
misma que contara con diagonales tanto principal como secundaria, las mismas
que estarán llenadas con valores ceros (0) ambas diagonales y las demás
PROGRAMACION II
61
61 posiciones vacias. Esto se obtendrá mediante el ingreso de un límite, que será
quien manipule la matriz cuadrática. Como resultado nos dará las diagonales en su
forma original con ceros.
Desarrollo:
#include<conio.h>
#include<stdio.h>
int matriz[15][15],i,j,limite,t,k,col,fila,op,c;
void borde()
{
for(k=1;k<=80;k++)
{
gotoxy(k,1);printf("&");
gotoxy(k,24);printf("&");
}
for(k=1;k<=24;k++)
{
gotoxy(1,k);printf("&");
gotoxy(80,k);printf("&");
}
}
void principal(int limi)
{
col=20;
fila=10;
t=0;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
if(i==j)
{
t=0;
matriz[i][j]=t;
gotoxy(col,fila);printf("%d",matriz[i][j]);
}
col=col+2;
}
fila=fila+1;
col=20;
Librerías Principales
Declaración de Variables Globales
Función borde: Esta función es un
subprograma que realizara un borde
en pantalla, para lo cual estamos
utilizando dos ciclos FOR los cuales
van a permitir que se realice el
borde.
Función principal: Esta función es un
subprograma que permitirá llenar la
diagonal principal con valores ceros
(0).
PROGRAMACION II
62
62 }
}
void secundaria(int limi)
{
col=20;
fila=10;
c=limite;
t=0;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
if(c==j)
{
t=0;
matriz[i][j]=t;
gotoxy(col,fila);printf("%d",matriz[i][j]);
c=c-1;
}
col=col+2;
}
fila=fila+1;
col=20;
}
}
void main()
{
do
{
clrscr();
borde();
gotoxy(30,4);printf("MATRIZ:DIAGONALES");
gotoxy(10,6);printf("Limite: ");scanf("%d",&limite);
principal(limite);
secundaria(limite);
gotoxy(20,22);printf("Desea continuar SI(1)-NO(0) ==> ");scanf("%d",&op);
}
while(op==1);
getch();
}
Inicio del programa principal
Inicio del lazo Do para
generar el programa n
veces.
Función secundaria: Esta función es
un subprograma que permitirá
llenar la diagonal secundaria con
valores ceros (0).
Blanqueo de pantalla
Llamado a la función borde
Llamado a las funciones
Cierre del lazo Do while para
generar n veces el programa
Fin del programa
PROGRAMACION II
63
63
Ejecución:
“Pantalla1: Ingreso del limite”
“Pantalla 2: Diagonales principal y secundaria con valores ceros (0) “
13. Diseñe un programa utilizando matrices y funciones, que me permita ingresar n
términos en una matriz entre 5 y 35, encontrar todos los valores impares
PROGRAMACION II
64
64 ingresados en la matriz, pasarlos a un vector y presentar dicho vector ordenado
en forma ascendente y descendente, el proceso se repite n veces.
Análisis:
El presente programa nos permitirá llenar una matriz cuadrática de cualquier
orden con valores entre 5 y 35, una vez ingresada la matriz se deberá encontrar los
valores impares y almacenarlos en un vector ordenarlos en forma ascendente y
descendente, y visualizarlos. Este proceso se repite n veces.
Desarrollo:
#include<conio.h>
#include<stdio.h>
int matriz[20][20],k,i,j,col,fila,limite,op,vector[20],h,m,x=1,aux;
void borde()
{
for(k=1;k<=80;k++)
{
gotoxy(k,1);printf("&");
gotoxy(k,24);printf("&");
}
for(k=1;k<=24;k++)
{
gotoxy(1,k);printf("&");
gotoxy(80,k);printf("&");
}
}
void ingreso(int limi)
{
col=6;
fila=8;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
do
{
gotoxy(col,fila);printf(" ");
gotoxy(col,fila);scanf("%d",&matriz[i][j]);
}
Librerías Principales
Declaración de Variables Globales
Función borde: Esta función es un
subprograma que realizara un borde en
pantalla, para lo cual estamos utilizando
dos ciclos FOR los cuales van a permitir
que se realice el borde.
Función ingreso: Esta función es un
subprograma que realizara el
ingreso de datos validando los
mismos entre 5 y 35.
PROGRAMACION II
65
65 while(matriz[i][j]<5 || matriz[i][j]>35);
col=col+4;
}
fila=fila+1;
col=6;
}
}
void impares(int limi)
{
col=20;
fila=8;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
if(matriz[i][j]%2!=0)
{
vector[x]=matriz[i][j];
x=x+1;
}
col=col+4;
}
fila=fila+1;
col=20;
}
}
void vec(int limi)
{
fila=8;
for(i=1;i<=limi;i++)
{
gotoxy(20,fila);printf("%d",vector[i]);
fila=fila+1;
}
}
void ascendente()
{
for(h=1;h<x;h++)
{
Función impares: Esta función es
un subprograma tomara los datos
impares ingresados en la matriz y
los almacenara en un vector.
Función vec: Esta función es un
subprograma que nos permitirá
visualizar el vector sin ordenar.
PROGRAMACION II
66
66 for(m=1;m<x;m++)
{
if(vector[h]<vector[m])
{
aux=vector[h];
vector[h]=vector[m];
vector[m]=aux;
}
}
}
}
void descendente()
{
for(h=1;h<=x;h++)
{
for(m=1;m<=x;m++)
{
if(vector[h]>vector[m])
{
aux=vector[h];
vector[h]=vector[m];
vector[m]=aux;
}
}
}
}
void imprimir()
{
fila=8;
for(i=1;i<x;i++)
{
gotoxy(30,fila);printf("%d",vector[i]);
fila=fila+1;
}
}
void imprimir1()
{
fila=8;
for(i=1;i<x;i++)
Función ascendente: Esta función
es un subprograma que nos
permitirá ordenar los datos
almacenados en la matriz en forma
ascendente.
Función descendente: Esta función
es un subprograma que nos
permitirá ordenar los datos
almacenados en la matriz en forma
descendente.
Función imprimir: Esta función es
un subprograma que nos permitirá
visualizar los datos almacenados
en la matriz en forma ascendente.
Función imprimir1: Esta función es
un subprograma que nos permitirá
visualizar los datos almacenados
en la matriz en forma
descendente.
PROGRAMACION II
67
67 {
gotoxy(50,fila);printf("%d",vector[i]);
fila=fila+1;
}
}
void main()
{
do
{
clrscr();
borde();
x=1;
fila=8;
col=6;
gotoxy(30,3);printf("MATRICES");
gotoxy(5,4);printf("Limite: ");scanf("%d",&limite);
ingreso(limite);
impares(limite);
vec(limite);
ascendente();
imprimir();
descendente();
imprimir1();
gotoxy(20,22);printf("Desea Continuar SI(1)-NO(0) ==> ");scanf("%d",&op);
}
while(op==1);
getch();
}
Ejecución:
Inicio del programa principal
Inicio del lazo Do para
generar el programa n
veces. Blanqueo de pantalla
Llamado a la función borde
Llamado a las funciones
Cierre del lazo Do while para
generar n veces el programa
Fin del programa
PROGRAMACION II
68
68
“Pantalla1: Ingreso del limite”
“Pantalla2: Ingreso de la matriz”
“Pantalla3: Resultados”
PROGRAMACION II
69
69 14. Diseñe un programa utilizando matrices y funciones, que me permita generar
una matriz con cualquier factor ingresado desde teclado, recorrer la matriz y
encontrar todas las posiciones pares ya sea en filas o en columnas y guardar sus
datos en un vector.
Análisis:
El presente programa nos permitirá llenar una matriz cuadrática de cualquier
orden con diferentes valores de acuerdo al factor ingresado desde teclado por el
usuario, una vez ingresada la matriz se deberá encontrar las posiciones pares ya
sea en filas o en columnas y almacenarlos en un vector. Este proceso se repite n
veces.
Desarrollo:
#include<conio.h>
#include<stdio.h>
int matriz[20][20],vector[20],k,i,j,t;
int fac,limite,op,x,con,col,fila;
void borde()
{
for(k=1;k<=80;k++)
{
gotoxy(k,1);printf("&");
gotoxy(k,24);printf("&");
}
for(k=1;k<=24;k++)
{
gotoxy(1,k);printf("&");
gotoxy(80,k);printf("&");
}
}
void ingreso(int limi,int f)
{
col=8;
fila=8;
con=1;
t=0;
for(i=1;i<=limi;i++)
{
Librerías Principales
Declaración de Variables Globales
Función borde: Esta función es un
subprograma que realizara un borde en
pantalla, para lo cual estamos utilizando
dos ciclos FOR los cuales van a permitir
que se realice el borde.
PROGRAMACION II
70
70 for(j=1;j<=limi;j++)
{
t=f*con;
matriz[i][j]=t;
con=con+1;
gotoxy(col,fila);printf("%d",matriz[i][j]);
col=col+4;
}
fila=fila+1;
col=8;
}
}
void posiciones(int limi)
{
x=1;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
if((i%2==0)||(j%2==0))
{
vector[x]=matriz[i][j];
x=x+1;
}
col=col+4;
}
fila=fila+1;
col=8;
}
}
void imprimir()
{
fila=8;
for(i=1;i<x;i++)
{
gotoxy(40,fila);printf("%d",vector[i]);
fila=fila+1;
}
}
Función ingreso: Esta función es un
subprograma que llenara la matriz
de acuerdo al factor ingresado.
Función posiciones: Esta función es
un subprograma que realizara el
proceso de tomar las posiciones
pares de la matriz ya sea en filas o
en columnas.
Función imprimir: Esta función es
un subprograma que visualizara el
vector resultante.
PROGRAMACION II
71
71
void main()
{
do
{
clrscr();
borde();
col=8;
fila=8;
con=1;
x=0;
gotoxy(30,4);printf("VECTORES Y MATRICES");
gotoxy(5,5);printf("Limite: ");scanf("%d",&limite);
gotoxy(5,6);printf("Factor: ");scanf("%d",&fac);
ingreso(limite,fac);
posiciones(limite);
imprimir();
gotoxy(20,22);printf("Desea continuar SI(1)-NO(0)==> ");scanf("%d",&op);
}
while(op==1);
getch();
}
Ejecución:
“Pantalla Principal”
Inicio del programa principal
Inicio del lazo Do para
generar el programa n
veces. Blanqueo de pantalla
Llamado a la función borde
Llamado a las funciones
Cierre del lazo Do while para
generar n veces el programa
Fin del programa
PROGRAMACION II
72
72
“Pantalla 1: Ingreso del limite y del factor”
“Pantalla 2: Vector resultante”
15. Diseñe un programa en C que permita obtener el producto algebraico de 2
matrices de n elementos ingresados desde teclado que se encuentren entre 1 y
23.
PROGRAMACION II
73
73
Análisis:
Este programa nos permitirá obtener un producto algebraico de matrices, tras el
ingreso de dos matrices de cualquier orden con valores desde 1 hasta 23, una vez
ingresadas las dos matrices se realizara el proceso de multiplicación y suma de la
primera fila de la primera matriz con la primera columna de la segunda matriz, así
hasta obtener el producto algebraico de toda la matriz. Este proceso se lo realiza n
veces.
Desarrollo:
#include<conio.h>
#include<stdio.h>
int col,fila,k,x,i,j,op,a,limite;
int matriz1[15][15],matriz2[15][15],matriz3[15][15];
void borde()
{
for(k=1;k<=80;k++)
{
gotoxy(k,1);printf("&");
gotoxy(k,24);printf("&");
}
for(k=1;k<=24;k++)
{
gotoxy(1,k);printf("&");
gotoxy(80,k);printf("&");
}
}
void entrada(int limi)
{
fila=10;
col=10;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
do
{
gotoxy(col,fila);printf(" ");
Librerías Principales
Declaración de Variables Globales
Función borde: Esta función es un
subprograma que realizara un
borde en pantalla, para lo cual
estamos utilizando dos ciclos FOR
los cuales van a permitir que se
realice el borde.
Función entrada: Esta función
es un subprograma permitirá
ingresar datos en una primera
matriz.
PROGRAMACION II
74
74 gotoxy(col,fila);scanf("%d",&matriz1[i][j]);
}
while(matriz1[i][j]<1 || matriz1[i][j]>23);
col=col+4;
}
col=10;
fila=fila+1;
}
}
void entrada2(intlimi)
{
fila=10;
col=35;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
do
{
gotoxy(col,fila);printf(" ");
gotoxy(col,fila);scanf("%d",&matriz2[i][j]);
}
while(matriz2[i][j]<1 || matriz2[i][j]>23);
col=col+4;
}
col=35;
fila=fila+1;
}
}
void producto(int limi)
{
fila=10;
col=60;
for(i=1;i<=limi;i++)
{
for(j=1;j<=limi;j++)
{
matriz3[i][j]=0;
for(x=0;x<=limi;x++)
{
Función producto: Esta función es
un subprograma que realizara el
proceso de producto algebraico de
las matrices ingresadas.
Función entrada2: Esta
función es un subprograma
permitirá ingresar datos en
una segunda matriz.
PROGRAMACION II
75
75 matriz3[i][j]=matriz3[i][j]+matriz1[i][x]*matriz2[x][j];
}
}
}
}
void imprimir (int limi)
{
for(i=1;i<=limi;i++)
{
for(x=1;x<=limi;x++)
{
gotoxy(col,fila);printf("%d",matriz3[i][x]);
col=col+4;
}
col=60;
fila=fila+1;
}
}
void main()
{
do
{
clrscr();
borde();
gotoxy(28,5);printf("MATRIZ:PRODUCTO ALGEBRAICO");
gotoxy(8,8);printf("Limite: ");scanf("%d",&limite);
entrada(limite);
entrada2(limite);
producto(limite);
imprimir(limite);
gotoxy(20,22);printf("Desea Continuar SI(1)-NO(0) ==> ");scanf("%d",&op);
}
while(op==1);
getch();
}
Inicio del programa principal
Inicio del lazo Do para generar el
programa n veces.
Llamado a la función borde
Blanqueo de pantalla
Fin del programa
Cierre del lazo Do while
para generar n veces el
programa
Llamado a las funciones
Función imprimir: Esta función es
un subprograma que visualizara el
producto algebraico, de las
matrices ingresadas.
PROGRAMACION II
76
76
Ejecución:
“Pantalla principal”
“Pantalla 2: Ingrese el límite”
PROGRAMACION II
77
77
“Pantalla3: Ingreso de la primera matriz”
“Pantalla4: Ingreso de la segunda matriz”
PROGRAMACION II
78
78 Bibliografía:
http://ronnyml.wordpress.com/2009/07/04/vectores-matrices-y-punteros-en-c/
http://www.tvhdenvivo.com/matrices-en-c-186673
http://www.taringa.net/posts/apuntes-y-monografias/14305416/Multiplica_-suma-y-resta-
matrices-en-C_-proyecto-completo.html
http://www.zator.com/Cpp/E4_3.htm
http://codigoc.org/tag/matrices
http://dis.unal.edu.co/~programacion/book/modulo3.pdf