programacion ii

78
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

Upload: krito-mejia

Post on 28-Mar-2016

217 views

Category:

Documents


0 download

DESCRIPTION

Matrices y ejercicios

TRANSCRIPT

Page 1: PROGRAMACION II

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

Page 2: PROGRAMACION II
Page 3: PROGRAMACION II

"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

Page 4: PROGRAMACION II
Page 5: PROGRAMACION II

PROGRAMACION II

5

5

Page 6: PROGRAMACION II

PROGRAMACION II

6

6

Page 7: PROGRAMACION II

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:

Page 8: PROGRAMACION II

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]

Page 9: PROGRAMACION II

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.

Page 10: PROGRAMACION II

PROGRAMACION II

10

10

Page 11: PROGRAMACION II

PROGRAMACION II

11

11

Page 12: PROGRAMACION II

PROGRAMACION II

12

12

Page 13: PROGRAMACION II

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.

Page 14: PROGRAMACION II

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.

Page 15: PROGRAMACION II

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

Page 16: PROGRAMACION II

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.

Page 17: PROGRAMACION II

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.

Page 18: PROGRAMACION II

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.

Page 19: PROGRAMACION II

PROGRAMACION II

19

19

“Pantalla Principal”

“Pantalla 1: Ingreso de la cadena de caracteres”

Page 20: PROGRAMACION II

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

Page 21: PROGRAMACION II

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.

Page 22: PROGRAMACION II

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

Page 23: PROGRAMACION II

PROGRAMACION II

23

23

“Pantalla 1: Ingreso de la cadena de caracteres”

“Pantalla 2: Visualización del vector resultantes”

Page 24: PROGRAMACION II

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.

Page 25: PROGRAMACION II

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.

Page 26: PROGRAMACION II

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.

Page 27: PROGRAMACION II

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

Page 28: PROGRAMACION II

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

Page 29: PROGRAMACION II

PROGRAMACION II

29

29

“Pantalla 1: Selección de opciones”

“Pantalla 2: Cadena con vocales”

Page 30: PROGRAMACION II

PROGRAMACION II

30

30

“Pantalla 3: Visualización del vector resultante - vocales”

“Pantalla 4: Selección de opciones”

Page 31: PROGRAMACION II

PROGRAMACION II

31

31

“Pantalla 5: Cadena con consonantes”

“Pantalla 6: Visualización del vector resultante - consonantes”

Page 32: PROGRAMACION II

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.

Page 33: PROGRAMACION II

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

Page 34: PROGRAMACION II

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:

Page 35: PROGRAMACION II

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.

Page 36: PROGRAMACION II

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

Page 37: PROGRAMACION II

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.

Page 38: PROGRAMACION II

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.

Page 39: PROGRAMACION II

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.

Page 40: PROGRAMACION II

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

Page 41: PROGRAMACION II

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

Page 42: PROGRAMACION II

PROGRAMACION II

42

42

Ejecución:

“Pantalla Principal”

“Pantalla 1: Ingreso del limite”

Page 43: PROGRAMACION II

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

Page 44: PROGRAMACION II

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.

Page 45: PROGRAMACION II

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

Page 46: PROGRAMACION II

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.

Page 47: PROGRAMACION II

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.

Page 48: PROGRAMACION II

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.

Page 49: PROGRAMACION II

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.

Page 50: PROGRAMACION II

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.

Page 51: PROGRAMACION II

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

Page 52: PROGRAMACION II

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

Page 53: PROGRAMACION II

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.

Page 54: PROGRAMACION II

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.

Page 55: PROGRAMACION II

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

Page 56: PROGRAMACION II

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

Page 57: PROGRAMACION II

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.

Page 58: PROGRAMACION II

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.

Page 59: PROGRAMACION II

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

Page 60: PROGRAMACION II

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

Page 61: PROGRAMACION II

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

Page 62: PROGRAMACION II

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

Page 63: PROGRAMACION II

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

Page 64: PROGRAMACION II

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.

Page 65: PROGRAMACION II

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.

Page 66: PROGRAMACION II

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.

Page 67: PROGRAMACION II

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

Page 68: PROGRAMACION II

PROGRAMACION II

68

68

“Pantalla1: Ingreso del limite”

“Pantalla2: Ingreso de la matriz”

“Pantalla3: Resultados”

Page 69: PROGRAMACION II

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.

Page 70: PROGRAMACION II

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.

Page 71: PROGRAMACION II

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

Page 72: PROGRAMACION II

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.

Page 73: PROGRAMACION II

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.

Page 74: PROGRAMACION II

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.

Page 75: PROGRAMACION II

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.

Page 76: PROGRAMACION II

PROGRAMACION II

76

76

Ejecución:

“Pantalla principal”

“Pantalla 2: Ingrese el límite”

Page 77: PROGRAMACION II

PROGRAMACION II

77

77

“Pantalla3: Ingreso de la primera matriz”

“Pantalla4: Ingreso de la segunda matriz”

Page 78: PROGRAMACION II

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