52

MATRICES EN C

Embed Size (px)

DESCRIPTION

EJERCICIOS DE VECTORES Y MATRICES

Citation preview

Page 1: MATRICES EN C
Page 2: MATRICES EN C

VECTORES

Un vector es un conjunto de datos del mismo tipo que se identifican bajo un mismo nombre. Para acceder a un elemento específico se utiliza un índice (o posición).

En C, todos los vectores están constituidos por posiciones de memoria contiguas. Los vectores pueden tener una o varias dimensiones. El formato general de la declaración es: Tipo Nombre[Tamaño]; Ejemplos: int iVec[10]; int iVec[20]={0}; //Todos los elementos se inicializan al valor 0; int iVec[5]={5,7,8,9,1}; //Se pueden inicializar cada uno de los elementos

En todos los vectores el índice del primer elemento siempre es 0 por lo tanto,

cuando se declara int iVec[10] se está declarando un vector que tiene 5

elementos, desde iVec[0] hasta iVec[9]

ACCESO A ELEMENTOS

Para acceder a un elemento en concreto se debe utilizar el nombre del vector y entre corchetes especificar la posición de la celda. iVec[0]=3 ; // Asignar el valor 3 al primer elemento // Inicializar todos los elementos a 1: for( i = 0; i<5; i ++) { iVec[i]= 1; }

CADENAS DE CARACTERES En C, una cadena se define como un vector de caracteres de longitud determinada que finaliza con un carácter nulo. El carácter nulo se especifica como „\0‟ y se corresponde con el número 0. Por esta razón, para declarar vectores de caracteres es necesario que el tamaño tenga un carácter más que la cadena más larga que pueda almacenar. Por ejemplo, si se desea declarar un vector que contenga una cadena de 9 caracteres, se deberá escribir: char Cadena[11]; Inicializar el vector en la declaración: char Cadena[5]= {“Hola”}; //Al final se almacena el carácter NULL.

Page 3: MATRICES EN C

Si inicializamos el vector podemos omitir el tamaño del mismo: char Cadena[ ]= " Hola Mundo " ; Funciones interesantes de Cadenas char Cadena[20] ; //Declaración de una cadena - Aceptar una cadena por teclado: Estas funciones aceptan la introducción de caracteres que los almacena dentro del vector. Al final almacenan el carácter NULL y no controlan el tamaño del vector. scanf(“%s”, Cadena); Se acaba cuando se pulsa ENTER o ESPACIO. No permite la introducción de varias palabas. gets(Cadena); Se acaba cuando se pulsa ENTER. Permite la introducción de varias palabras - Mostrar por pantalla una cadena: printf(“%s”, Cadena); Muestra hasta que encuentra el carácter NULL. C soporta gran variedad de funciones de manipulación de cadenas. Algunas de las más habituales son: int strlen(char * c); Devuelve la cantidad de caracteres que contiene la cadena strcpy(char * c1,char cad * c2);

EJERCICIOS

1.- Diseñe un programa que me permita leer una cadena de caracteres y encontrar

todas aquellas que sean vocales y pasarlas a un nuevo vector en forma ordenada.

ANALISIS:

Primero necesitamos una cadena de texto luego con dicha cadena se calcula el

limite para la cual necesitamos el comando (strlen) para ver si es consonante

dentro de un lazo for qie empiece en uno y que llege asta el limite preguntamos

que si es los datos son iguales de las vocales si dice que los datos le enviamos a

un nuevo vector, luego dentro de dos for ordenamos los datos del nuevo vector

En un for que vaya desde 1 hasta el contador de vocales imprimimos el resultado.

CODICICADO:

#include<conio.h>

#include<stdio.h>

#include<string.h>

int j;

Librerías

principales

Función para realizar el borde

Page 4: MATRICES EN C

void borde ()

{

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 ("*");

}

}

void main()

{

char vector2[15],vector1[15],aux;

int i,col,fila=7,limi,op,h;

do

{

clrscr();

borde();

j=j+1;

aux=0;

j=1;

gotoxy(25,2);printf("ORDENAR LAS VOCALES");

flushall();

gotoxy(5,5);printf("INGRESE LA CADCENA DE CARACTERES==>");gets(vector1);

limi=strlen(vector1);

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

{

Función para el borde

Declaración de variables

Borrado de pantalla

Llamo a la función borde

Retorna la cadena de carácter al inicio

Ingreso de la cadena

de caracter

Retorna al inicio de la cadena de caracteres

Page 5: MATRICES EN C

if(vector1[i]=='a')

{

vector2[j]=vector1[i];

j=j+1;

}

if(vector1[i]=='e')

{

vector2[j]=vector1[i];

j=j+1;

}

if(vector1[i]=='i')

{

vector2[j]=vector1[i];

j=j+1;

}

if(vector1[i]=='o')

{

vector2[j]=vector1[i];

j=j+1;

}

if(vector1[i]=='u')

{

vector2[j]=vector1[i];

j=j+1;

}

}

fila=8;

Proceso para ver si son

vocales

Page 6: MATRICES EN C

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

{

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

{

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

{

aux=vector2[i];

vector2[i]=vector2[h];

vector2[h]=aux;

}

}

}

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

{

gotoxy(25,fila);printf("%c",vector2[i]);

fila=fila+1;

}

gotoxy(20,20);printf("<<PRESIONE 1 PARA CONTINUAR o 0 PARA TERMINAR>>

"); scanf("%d",&op);

}

while(op==1);

getch();

}

CORRIDO DEL PROGRAMA:

Proceso para ordenar las

vocales

For para imprimir el vector ordenado

Ingreso la opción para continuar o no

Ciclo para continuar o no

Pausa del programa

Page 7: MATRICES EN C

2.- Diseñe un programa que me permita leer una cadena de caracteres imprima

dicha cadena de caracteres en forma descendente.

ANALISIS:

Primero necesitamos una cadena de texto luego con dicha cadena se calcula el

limite para la cual necesitamos el comando (strlen) para visualizar la cadena de

caracteres en forma descendente necesitamos un for que empiece en el limite que

llegue asta que sea igual a cero y que tenga decrementos de uno.

CODIFICADO:

#include<conio.h>

#include<stdio.h>

int i,col=40,fila=9,limi,op,j;

char nombre[15];

void borde ()

{

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 ("*");

}

}

void main()

Librerías principales

Declaración de variables globales

Función para crear el borde

Page 8: MATRICES EN C

{

do

{

clrscr();

borde();

gotoxy(30,2);printf("CADENA DE CARACTERES");

flushall();

gotoxy(4,6);printf("INGRESE LA CADENA DE CARACTERES==>");gets(nombre);

limi=strlen(nombre);

col=20;

fila=9;

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

{

gotoxy(col,fila);printf("%c",nombre[i]);

fila=fila+1;

}

col=50;

fila=9;

for(i=limi;i>=0;i--)

{

textcolor(i);

gotoxy(col,fila);cprintf("%c",nombre[i]);

fila=fila+1;

}

gotoxy(22,22);printf("PRESIONE 1 PARA CONTINUAR Y 0 PARA

TERMINAR>");scanf("%d",&op);

}

while(op==1);

getch();

}

CORRIDO DEL PROGRAMA:

Retorna al

principio de la

cadena de texto

Ingreso de la cadena

de texto

Veo el limite de la cadena de texto

Imprimo la cadena de

texto en forma normal

Imprimo la cadena de texto en forma

desendente

Pausa del programa

Page 9: MATRICES EN C

3.- Diseñe un programa que me permita leer una cadena de caracteres y

encontrar todos aquellos caracteres que sean consonantes pasarlos en

forma de vector y presentarlos en forma ordenada.

ANALISIS:

Primero necesitamos una cadena de texto luego con dicha cadena se calcula el

limite para la cual necesitamos el comando (strlen) para ver si es consonante

dentro de un lazo for qie empiece en uno y que llege asta el limite preguntamos

que si es los datos son diferentes de las vocales si dice que los datos le enviamos

a un nuevo vector, luego dentro de dos for ordenamos los datos del nuevo vector.

CODIFICADO:

#include<conio.h>

#include<stdio.h>

#include<string.h>

int j;

void borde ()

{

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 para realizar el borde

Page 10: MATRICES EN C

}

}

void main()

{

char vector2[15],vector1[15],aux;

int col,fila=7,limi,i,op,h;

do

{

clrscr();

borde();

aux=0;

j=1;

gotoxy(25,2);printf("ORDEN DE CONSONANTES");

flushall();

gotoxy(5,5);printf("INGRESE LA CADCENA DE

CARACTERES==>");gets(vector1);

limi=strlen(vector1);

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

{

if(vector1[i]!='a' && vector1[i]!='e' && vector1[i]!='i' && vector1[i]!='o' &&

vector1[i]!='u')

{

vector2[j]=vector1[i];

j=j+1;

}

}

fila=8;

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

{

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

{

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

{

aux=vector2[i];

vector2[i]=vector2[h];

vector2[h]=aux;

}

}

}

Borrado de pantalla

Llamo a la función del borde

Ingreso de la cadena de texto

Verifico cual es limite

Pregunta para ver si son consonantes

Paso los datos a otro vector

Incremento el índice del nuevo vector

Proceso para ordenar el vector

Page 11: MATRICES EN C

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

{

gotoxy(25,fila);printf("%c",vector2[i]);

fila=fila+1;

}

gotoxy(20,20);printf("<<PRESIONE 1 PARA CONTINUAR o 0 PARA

TERMINAR>> "); scanf("%d",&op);

}

while(op==1);

getch();

}

CORRIDO DERL PROGRAMA:

4.- Diseñe un programa utilizando funciones que me permita diseñar un

menú de opciones con las siguientes alternativas.

a) cadena de vocales

b) cadena de consonantes

c) salir

ANALISIS:

CODIFICADO:

#include<conio.h>

#include<stdio.h>

#include<string.h>

char vector2[15],vector1[15],aux;

int i,col,fila,limi,j,op,h,op1;

Proceso de imprimir el vector

ordenado

Pausa del programa

Proceso para controlar si

desea continuar o no

Librerías principales

Declaración de variables

globales

Page 12: MATRICES EN C

void borde ()

{

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 ("*");

}

}

void vocales()

{

j=1;

gotoxy(25,2);printf("MANEJO DE CADENA DE CARACTERES");

flushall();

gotoxy(5,5);printf("INGRESE LA CADENA DE CARACTERES==>");gets(vector1);

limi=strlen(vector1);

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

{

if(vector1[i]=='a')

{

vector2[j]=vector1[i];

j=j+1;

}

if(vector1[i]=='e')

{

vector2[j]=vector1[i];

j=j+1;

}

if(vector1[i]=='i')

{

vector2[j]=vector1[i];

j=j+1;

}

if(vector1[i]=='o')

{

vector2[j]=vector1[i];

j=j+1;

Función para crear el

borde

Ingreso la

cadena de texto

Sirve para ver el limite

Pregunta para ver si

es vocal y paso a un

vector

Page 13: MATRICES EN C

}

if(vector1[i]=='u')

{

vector2[j]=vector1[i];

j=j+1;

}

}

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

{

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

{

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

{

aux=vector2[i];

vector2[i]=vector2[h];

vector2[h]=aux;

}

}

}

fila=8;

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

{

gotoxy(25,fila);printf("%c",vector2[i]);

fila=fila+1;

}

}

void conso()

{

j=1;

gotoxy(25,2);printf("MANEJO DE CADENA DE CARACTERES");

flushall();

gotoxy(5,5);printf("INGRESE LA CACENA DE CARACTERES==>");gets(vector1);

limi=strlen(vector1);

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

{

if(vector1[i]!='a')

{

vector2[j]=vector1[i];

j=j+1;

}

if(vector1[i]!='e')

Pregunta para ver si es

vocal y paso a un vector

Ordeno las vocales

Imprimo las vocales ordenadas

Ingreso la cadena de

texto

Sirve para saber el límite de la cadena de texto

Pregunta para ver si son consonante y

paso aun vector

Page 14: MATRICES EN C

{

vector2[j]=vector1[i];

j=j+1;

}

if(vector1[i]!='i')

{

vector2[j]=vector1[i];

j=j+1;

}

if(vector1[i]!='o')

{

vector2[j]=vector1[i];

j=j+1;

}

if(vector1[i]!='u')

{

vector2[j]=vector1[i];

j=j+1;

}

}

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

{

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

{

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

{

aux=vector2[i];

vector2[i]=vector2[h];

vector2[h]=aux;

}

}

}

fila=8;

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

{

gotoxy(25,fila);printf("%c",vector2[i]);

fila=fila+1;

}

}

Pregunta para ver si son consonante y paso aun

vector

Proceso para ordenar las

consonantes

Imprimo las

consonantes ordenadas

Page 15: MATRICES EN C

void main()

{

do

{

clrscr();

borde();

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

gotoxy(5,5);printf("1.- VOCALES");

gotoxy(5,7);printf("2.- CONSONANTES");

gotoxy(5,9);printf("3.- SALIR");

gotoxy(5,13);printf("INGRESE LA OPSCION QUE DESEE==>

");scanf("%d",&op1);

switch(op1)

{

case 1:

clrscr();

borde();

vocales();

break;

case 2:

clrscr();

borde();

conso();

break;

case 3:

exit();

break;

}

gotoxy(18,22);printf("<<PRESIONE 1 PARA COMTINUAR o 0 PARA

TERMINAR>>");scanf("%d",&op);

}

while(op==1);

getch();

}

CORRIDO:

Borrado de la pantalla

Llamo a la función del borde

Ingreso la opción para el switch

Mensajes del menú

Llamo a la función del borde

Llamo a la función de las vocales

Si la opción es 1

Llamo a la función del borde

Llamo a la función de las vocales

Si la opción es 1

Pausa del programa

Page 16: MATRICES EN C

MATRIZ (ARRAY BIDIMENSIONAL)

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: 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:

Page 17: MATRICES EN C

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; En el siguiente ejemplo se inicializa el vector con valores introducidos por teclado y a continuación se muestra por pantalla:

Una matriz es un array multidimensional. Se definen igual que los vectores excepto que se requiere un índice por cada dimensión. Su sintaxis es la siguiente: <tipo> <identificador> [<filas>][<columnas>]

Matriz <identificador>[<índice1>][<índice2>]

INICIALIZACIÓN

int matriz[2][3] = { {1,2,3}, {4,5,6} };

Una matriz bidimensional se podría representar gráficamente como una tabla con filas y columnas. En el ejemplo puedes ver como se rellena y visualiza una matriz bidimensional. Se necesitan dos bucles para cada una de las operaciones. Un bucle controla las

filas y otro las columnas.

EJERCICIOS:

5.- Diseñe un programa que me permita ingresar n elementos en una matriz

cuadrática entre 3 y 35, presente la matriz resultante.

ANALISIS:

Para ingresar la matriz creamos la función de ingreso en la cual necesitamos 2 for uno para

las filas y ptro para las columnas con un do whail controlo que los datos ingresados estén

entre 3 y 35. Para imprimir creamos una función dentro de esta estarán 2 for uno para las

filas y otros para las columnas dentro de estos for imprimimos la matriz resultante.

CODIFICADO:

Page 18: MATRICES EN C

#include<stdio.h>

#include<conio.h>

int matriz[10][10],col,fila,i,j,limite,op;

void borde()

{

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

{

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

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

}

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

{

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

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

}

}

void ingreso(int limi)

{

col=20;

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]>35);

LIBRERIAS PRINCIPALES

DECLARACION DE VARIABLES GLOBALES

FUNCION PARA

CREAR EL BORDE

Ingreso de

los números

pero

controlo

desde 3

hasta 35

Función para el

ingreso de los datos

en la matriz

Page 19: MATRICES EN C

col=col+5;

}

col=20;

fila=fila+2;

}

}

void imprime(int limi)

{

col=50;

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;

}

col=50;

fila=fila+2;

}

}

void main()

{

do

{

clrscr();

borde();

gotoxy(25,3);printf("MANEJO DE MATRICES");

gotoxy(5,5);printf("INGRESE EL LIMITE==> ");scanf("%d",&limite);

gotoxy(20,9);printf("MATRIZ INGRESO");

gotoxy(50,9);printf("MATRIZ RESULTANTE");

Incremento las columnas

Incremento las filas

Función para imprimir la

matriz

Borrado de la pantalla

Llamo a la función borde Ingreso del límite

Programa

principal

Page 20: MATRICES EN C

ingreso(limite);

imprime(limite);

gotoxy(22,22);printf("<<PRESIONE 1 PARA CONTINUAR o 0 PARA TERMINAR>>

");scanf("%d",&op);

}

while(op==1);

getch();

}

CORRIDO DEL PROGRAMA:

6.- Diseñe un programa utilizando matrices y funciones que me permita generar un

matriz de cualquier orden con cualquier factor ingresado desde teclado.

ANALISIS:

Creamos la función en la cual realizaremos el calculo del factor de un número para

necesitamos que en una variable que empiece en 1(c=1) que me sirve como el multiplicador

dentro de dos for realizamos el calculo del factor este factor resultante reasigno a la matriz

e imprimo la matriz incremento la variable del multiplicador c=c+1.

CODIFICADO:

#include<stdio.h>

#include<conio.h>

int matriz[10][10],col,fila,i,j,limite,fact,c,op,factor;

Llamo a las funciones pero envió el parámetro del límite

Pausa para el programa

Librerías principales

Declaración de variables globales

Page 21: MATRICES EN C

void borde()

{

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

{

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

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

}

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

{

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

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

}

}

void factores(int limi, int fac)

{

col=25;

fila=10;

c=1;

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

{

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

{

fact=fac*c;

matriz[i][j]=fact;

gotoxy(col,fila);printf("%d",matriz[i][j]);

c=c+1;

col=col+5;

}

col=25;

fila=fila+2;

}

}

void main()

{

do

{

clrscr();

borde();

gotoxy(25,3);printf("MATRIZ CON FACRTORES");

gotoxy(5,5);printf("INGRESE EL LIMITE==> ");scanf("%d",&limite);

gotoxy(5,7);printf("INGRESE EL FACTOR==> ");scanf("%d",&factor);

Función para crear el

borde

Imprimo la matriz con

los factores del numero

ingresado

Proceso para calcular el

factor

Incremento el

multiplicador

Reasigno el valor del factor a la matriz

Función para

calcular el factor

de un numero

Borro la pantalla

Llamo a la función borde Ingreso el límite

Ingreso

el factor

Page 22: MATRICES EN C

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

factores(limite,factor);

gotoxy(22,22);printf("<<PRESIONE 1 PARA CONTINUAR o 0 PARA TERMINAR>>

");scanf("%d",&op);

}

while(op==1);

getch();

}

CORRIDO DEL PROGRAMA:

7.- Diseñe un programa que me permita llenar una matriz de cualquier orden con

valores pares.

ANALISIS:

Creamos la función pares esta función tiene parámetros, dentro de esta función necesitamos

una variable que empiece en 2 esta variable se utilizara para calcular los números pares

utilizaremos 2 for uno para las filas y otra para las columnas, dentro de estos for

realizaremos el calculo de los números pares este valor reasigno a la matriz e imprimo la

matriz.

Llamo a la función pero envió parámetros

Ingreso la opción para ves si deseo continuar o no

Pausa del programa

Page 23: MATRICES EN C

CODIFICADO:

#include<stdio.h>

#include<conio.h>

int matriz[10][10],col,fila,i,j,limite,par,c,op;

void borde()

{

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

{

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

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

}

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

{

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

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

}

}

void pares(int limi)

{

col=25;

fila=10;

c=2;

par=0;

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

{

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

{

par=par+c;

matriz[i][j]=par;

gotoxy(col,fila);printf("%d",matriz[i][j]);

col=col+5;

Librerías principales

Declaración de variables globales

Función para crear el

borde

Proceso para calcular los

números pares

Reasigno el valor de los pares a la matriz

Imprimo la matriz

Función para

calcular e imprimir

la matriz con los

números pares

Page 24: MATRICES EN C

}

fila=fila+2;

col=25;

}

}

void main()

{

do

{

clrscr();

borde();

gotoxy(25,3);printf("MATRIZ CON NIMEROS PARES");

gotoxy(5,5);printf("INGRESE EL LIMITE==>");scanf("%d",&limite);

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

pares(limite);

gotoxy(22,22);printf("<<PRESIONE 1 PARA CONTINUAR o 0 PARA TERMINAR>>

");scanf("%d",&op);

}

while(op==1);

getch();

}

CORRIDO DEL PROGRAMA:

Borrado de la pantalla

Llamo a la función borde Ingreso el límite

para la matriz

Llamo a la función

pero envió el limite

Ingreso la opción para continuar o no

Pausa del programa

Page 25: MATRICES EN C

8.- Generar una matriz de cualquier orden con valores ceros, a acepción de la

diagonal principal, la misma que se llena con valores unos, recorra la matriz y

guarde los datos de la diagonal principal en un vector y presente los datos en forma

ordenado.

ANÁLISIS:

Realizo la función de ingreso para la cual a una variable le doy el valor de uno dentro de

dos for uno para las filas y otro para las columnas dentro de estos dos for pregunto si las

fila es igual a la columna si dice que si reasigno el valor que antes asignamos a la variable a

la matriz e imprimimos a la matriz caso contrario imprimo cero en la matriz, realizamos la

función para pasar los datos de la diagonal principal a un vector imprimimos dicho vector,

CODIFICADO:

#include<conio.h>

#include<stdio.h>

int matriz[10][10],vector[10],i,j,col,fila,op,x,y,limite;

void borde()

{

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

{

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

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

}

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

{

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

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

}

}

void ingreso(int limi)

{

col=15;

fila=8;

Librerías principales

Declaro las variables globales

Función para

realizar el borde

Page 26: MATRICES EN C

y=1;

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

{

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

{

if(i==j)

{

matriz[i][j]=y;

gotoxy(col,fila);printf("%d",matriz[i][j]);

}

else

{

gotoxy(col,fila);printf("0");

}

col=col+5;

}

fila=fila+2;

col=15;

}

}

void diago(int limi)

{

col=40;

fila=8;

x=1;

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

{

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

{

if(i==j)

{

Pregunto si la fila es igual a

al columna

Reasigno los valores pares a la

matriz

Imprimo la

matriz con el

números 1

Imprimo cero si no es la

diagonal principal

Page 27: MATRICES EN C

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

x=x+1;

gotoxy(col,fila);printf("%d",matriz[i][j]);

col=col+5;

fila=fila+2;

}

}

}

fila=8;

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

{

gotoxy(70,fila);printf("%d",vector[i]);

fila=fila+1;

}

}

void main()

{

do

{

clrscr();

borde();

gotoxy(15,3);printf("MANEJO DE MATRICES Y DIAGONAL PRINCIPLA");

gotoxy(5,5);printf("INGRESE EL LIMITE==>");scanf("%d",&limite);

gotoxy(5,5);printf("INGRESE EL LIMITE==>");

gotoxy(5,5);printf("INGRESE EL LIMITE==>");

gotoxy(70,5);printf("VECTOR");

ingreso(limite);

diago(limite);

gotoxy(20,22);printf("<<PRESIONE 1 PARA CONTINUAR o 0 PARA TEMINAR>>

");scanf("%d",&op);

}

Reasigno los valores de la diagonal principal

a un vector

Imprimo el vector con los

datos de la diagonal principal

Borro la pantalla

Llamo a la función borde

Ingreso el limite

para la matriz

Llamo a las funciones pero envió el límite

Page 28: MATRICES EN C

while(op==1);

getch();

}

CORRIDO DEL PROGRAMA:

9.- Diseñe un programa utilizando matrices y funciones, que me permita generar una

matriz de n elementos con la serie de fibonacci, y la diagonal secundaria se llena

con el factorial, guarde los datos de la diagonal secundaria en un vector y presente.

ANALISIS:

CODIFICADO:

#include<conio.h>

#include<stdio.h>

int matriz[10][10],matriz2[10][10],vector[10],i,cl,colm,z,j,col,fila,x,a,b,d,c,y,f,fa,op,limite;

void borde()

{

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

{

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

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

}

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

Pausa del programa

Librerías principales

Declaración de

variables globales

Función para crear el

borde

Page 29: MATRICES EN C

{

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

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

}

}

void serie(int limi)

{

x=limi*limi;

a=1;

b=0;

col=10;

fila=10;

d=limi;

f=limi;

fa=1;

colm=5;

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

{

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

{

do

{

c=a+b;

a=b;

b=c;

y=y+1;

matriz[i][j]=c;

gotoxy(col,fila);printf("%d",matriz[i][j]);

gotoxy(colm,20);printf("%d",c);

colm=colm+5;

}

Proceso para calcular la

serie de fibonasi

Reasigno el valor de la serie a

una matriz Imprimo la matriz

con la serie de

fibonasi

Controlo que la serie no se

pase del limite

Page 30: MATRICES EN C

while(x==y);

if(d==j)

{

f=limi*fa;

matriz[i][j]=f;

gotoxy(col,fila);printf("%d ",matriz[i][j]);

fa=fa+1;

d=d-1;

}

col=col+5;

}

fila=fila+2;

col=10;

}

}

void diago(int limi)

{

d=limi;

cl=limi*5;

fila=10;

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

{

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

{

if(d==j)

{

gotoxy(40+cl,fila);printf("%d",matriz[i][j]);

d=d-1;

}

}

fila=fila+2;

Pregunto si la fial es igual a la

columna

Realizo el proceso para calcular

el factorial de un número

Reasigno el factorial a la matriz

Imprimo el factorial en la

diagonal secundaria

Decremento para la

diagonal secundaria

Page 31: MATRICES EN C

cl=cl-5;

}

}

void vecto(int limi)

{

d=limi;

fila=10;

z=1;

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

{

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

{

if(d==j)

{

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

z=z+1;

d=d-1;

}

}

}

fila=10;

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

{

gotoxy(70,fila);printf("%d",vector[i]);

fila=fila+1;

}

}

void main()

{

do

{

Page 32: MATRICES EN C

clrscr();

borde();

gotoxy(25,3);printf("MATRIZ CON LA SERIE DE FIBONASI");

gotoxy(5,5);printf("INGRESE EL LIMITE==> ");scanf("%d",&limite);

serie(limite);

diago(limite);

vecto(limite);

gotoxy(20,22);printf("<<PRESIONE 1 PARA CONTINUAR o 0 PARA TERMINAR>>

");scanf("%d",&op);

}

while(op==1);

getch();

}

CORRIDO DEL PROGRAMA:

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

ANALÑISIS:

Para realizar el producto algebraico de dos matrices realizamos lo siguiente realizo la

función de ingreso de las matrices para lo cual necesito dos for que empiece en 1 llegue

asta el limite que será ingresado y tenga incrementos de 1 un para las filas y otro para las

columnas con un do while controlo que los datos ingresados estén entre 1 y 23 este proceso

realizo para las dos matrices.

Borro la pantalla

Llamo ala función borde

Llamo a las funciones pero

envió el limite

Pausa del programa

Page 33: MATRICES EN C

Para realizar el producto algebraico realizo otra función dentro de esta función necesito dos

for uno para las filas y otro para las columnas, y dentro de estos for a la matriz resultante le

encero y con otro for que me sirve para ir multiplicando las filas por las columnas para

realizar el proceso del producto en el cual se debe hacer el siguiente calculo

matriz2[i][j]=matriz2[i][j]+matriz[i][k]*matriz1[k][j], luego de realizar el calculo cierro los

tres for, para imprimir la matriz resultante necesito dos for uno para las filas y otro para las

columnas e imprimo la matriz resultante.

En el programa principal llamo a la función borde dentro de un do while controlo el limite

que se encuentre entre 2 al 4 y llamo a la función de ingreso los datos pero envió como

parámetro el limite, llamo a la función producto y también envió como parámetro el limite

con un do while controlo si se desea continuar o no.

CODIFICADO:

#include<conio.h>

#include<stdio.h>

int matriz[10][10],matriz1[10][10],matriz2[10][10],limite,i,j,col,fila,k,l,aux,op;

void borde ()

{

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 ("*");

}

}

void ingreso (int limi)

{

col = 5;

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]);

Librerías principales

Declaración de

variables globales

Función para el

borde

Controlo

que este

entre 1 y 23

Ingreso de

la primera

matriz

Función del

ingreso de

las matrices

Page 34: MATRICES EN C

}

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

col = col + 5;

}

fila = fila +2;

col=5;

}

col = 30;

fila = 10;

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

{

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

{

do

{

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

gotoxy (col,fila); scanf("%d",& matriz1[i][j]);

}

while (matriz1[i][j]<1 || matriz1[i][j]>23);

col = col + 5;

}

fila = fila +2;

col=30;

}

}

void producto(int limi)

{

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

{

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

{

matriz2[i][j]=0;

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

{

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

}

}

}

col=50;

fila=10;

Controlo

que este

entre 1 y 23

Ingreso de

la segunda

matriz

Función para realizar el

producto algebraico

Asigno el valor de 0 a la matriz resultante Proceso para

hacer el

producto

algebraico

Para multiplicar la

columna

Para multiplicar la fila

Page 35: MATRICES EN C

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

{

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

{

gotoxy(col,fila);printf("%d",matriz2[i][j]);

col=col+5;

}

fila=fila+2;

col=50;

}

}

void main()

{

do

{

clrscr();

borde();

gotoxy(30,2);printf("PRODUCTO ALGEBRAICO DE MATIZ");

gotoxy(32,4);printf("MAURICIO CAGUANA");

do

{

gotoxy(27,6);printf(" ");

gotoxy(5,6);printf("INGRESE EL LIMITE===> ");scanf("%d",&limite);

}

while(limite<2 || limite>4);

gotoxy(8,8);printf("MATIZ 1");

gotoxy(32,8);printf("MATIZ 2");

gotoxy(52,8);printf("MATRIZ RESULTANTE");

ingreso(limite);

producto(limite);

gotoxy(20,22);printf("<<PRESIONE 1 PARA CONTINUAR o 0 PARA TERMINAR>>

");scanf("%d",&op);

}

while(op==1);

getch();

}

Proceso para imprimir

la el producto

algebraico

Ingreso el límite para

las matrices pero

controlo que este

entre 2 y 4

Llamado a la función borde

Borrado de la pantalla

Programa principal

Llamo a la función ingreso pero envió el parámetro límite

Llamo a la función producto pero envió el parámetro

límite

Pausa para el programa

Controlo si deseo continuar o no

Page 36: MATRICES EN C

CORRIDO DEL PROGRAMA:

11.- Diseñe un programa que permita generar una matriz cuadrática con números

primos

ANALISIS:

Necesitamos una variable para el primo que empiece en 1 dentro de 2 for realizamos el

proceso para ver si el número es primo para eso tenemos que preguntar si el número es que

le asignamos para el primo es igual a cero ((p%x)==0) si dice que si en una variable que va

a ser el contador para incremento 1, pregunto si la variable del contador es menor o igual

que cero si dice que si asigno el número primo a la matriz, incremento al número primo 1 y

a otra variable le asigno el valor de uno esta variable me va a servir para realizar las veces

que necesitemos, si dice que no a la variable anterior asigno a cero e incremento los

números primos. Para imprimir necesito dos for uno para las filas y otra para las columnas

imprimimos e incrementamos las columnas y las filas.

CODIFICADO:

#include<conio.h>

#include<stdio.h>

int matriz[10][10],i,j,col,fila,d,limite,op,cp=0,x=1,p=1,sw;

void borde()

{

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

{

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

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

}

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

{

Librerías principales

Declaración de variables

globales

Función para crear el borde

Page 37: MATRICES EN C

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

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

}

}

void primo(int limi)

{

p=1;

sw=0;

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

{

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

{

do

{

cp=0;

sw=0;

for (x=1;x<=p;x++)

{

if((p%x)==0)

{

cp=cp+1;

}

}

if(cp<=2)

{

matriz[i][j]=p;

p=p+1;

sw=1;

}

else

{

sw=0;

p=p+1;

}

}

while(sw==0);

}

}

}

void imprime(int li)

{

col=10;

fila=10;

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

{

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

{

Variable para controlar si

es primo

Variable para el primo

Variable para contar cuantas

veces se cumplen la condición

Pregunto si la división

es igual a cero

Incremento el contador para ver si es primo

Pregunto si el número es primo

Asigno el número primo a una

matriz

Función para imprimir los

números primos

Page 38: MATRICES EN C

gotoxy(col,fila);printf("%d",matriz[i][j]);

col=col+5;

}

fila=fila+2;

col=10;

}

}

void main()

{

do

{

clrscr();

borde();

gotoxy(25,3);printf("MATRIZ CON LOS NUMEROS PRIMOS");

gotoxy(5,5);printf("INGRESE EL LIMITE==> ");scanf("%d",&limite);

primo(limite);

imprime(limite);

gotoxy(20,23);printf("<<PRESIONE 1 PARA CONTINUAR o 0 PARA TERMINAR>>

");scanf("%d",&op);

}

while(op==1);

getch();

}

CORRIDO DEL PROGRAMA:

Borrado de la pantalla

Llamado de la función borde Ingreso el

limite para la

matriz

Llamo a las funciones pero envió el parámetro del límite

Pausa para el programa

Page 39: MATRICES EN C

12.- Diseñe un programa que permita ingresar n elementos en una matriz entre 3 y 36

presentar la matriz resultante ordenada en forma ascendente.

ANALISIS:

Para ingresar los datos a este programa necesitamos dos for uno para las filas y otros para

las columnas dentro de estos dos for necesitamos un do while para controlar el ingreso de

los datos que estén entre 3y 36, para ordenar los datos necesitamos cuatro for en el cual

dos son para las filas y los otros para realizar el proceso para ordenación, tenemos que

hacer de preguntar si la matriz[i][j]<matriz[k][l] si dice que si procedemos a realizar el

ordenamiento de los datos se la siguiente manera a un auxiliar le asignamos el valor de la

matriz (aux=matriz[i][j]), luego asigno a la matriz los datos de la otra matriz

(matriz[i][j]=matriz[k][l])y por ultimo el valor del auxiliar le asigno a la matriz

(matriz[k][l]=aux), para imprimir la matriz resultante necesito dos fos uno para las filas y

otro para las columnas .

CODIFICADO:

#include<conio.h>

#include<stdio.h>

int matriz[10][10],limite,i,j,col,fila,k,l,aux,op;

void borde ()

{

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

Declaración de variables

globales

Función para crear el borde

Page 40: MATRICES EN C

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 + 8;

}

fila = fila +2;

col=10;

}

}

void orden(int limi)

{

col=45;

fila=10;

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

{

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

{

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

{

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

{

if(matriz[i][j]<matriz[k][l])

{

aux=matriz[i][j];

matriz[i][j]=matriz[k][l];

matriz[k][l]=aux;

}

}

}

}

Proceso

para

controlar

los

números

que estén

entre 3 y

36

Incremento de las filas

Y reasigno las

columnas

Función para el

ingreso de

datos

Pregunta para

ves si es menor

Proceso para

realizar el

ordenamiento

burbuja

Page 41: MATRICES EN C

}

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 +2;

col=45;

}

}

void main()

{

do

{

clrscr();

borde();

gotoxy(30,2);printf("ORDENACION DE MATIZ");

gotoxy(32,4);printf("MAURICIO CAGUANA");

gotoxy(5,6);printf("INGRESE EL LIMITE===> ");scanf("%d",&limite);

gotoxy(12,8);printf("INGRESO DE MATIZ");

gotoxy(45,8);printf("ORDEN MATRIZ");

ingreso(limite);

orden(limite);

gotoxy(20,22);printf("<<PRESIONE 1 PARA CONTINUAR o 0 PARA TERMINAR>>

");scanf("%d",&op);

}

while(op==1);

getch();

}

Proceso para

imprimir la

matriz

ordenada

Borrado de pantalla

Llamar a la función borde

Llamar las funciones para el ingreso y orden

Ingreso el

limite para

la matriz

Page 42: MATRICES EN C

CORRIDO:

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

ANALISIS:

Primero tenemos que enserar la matriz, asigno a una variable el valor del limite esto nos

servirá para la diagonal secundaria, con el limite verifico si es par, si es par dentro de dos

for pregunto que la fila sea igual a la columna si dese que si realizamos el proceso para

calcular la serie de fibonasi el resultado de la serie de fibonasi asignamos a la matriz e

imprimimos los resultados en la diagonal principal, con la variable que le dimos el limite

pregunto que sea igual al segundo contador(d==j)si dice que si procederemos a calcular el

factorial el resultado asigno a la matriz e imprimimos la los resultados en la diagonal

secundaria, y restamos a la variable del limite menos 1 (d=d-1). Si es impar divido el limite

para 2 y a ese resultado le sumo 1 y dentro de dos for pregunto que la fila sea igual a la

columna si dese que si realizamos el proceso para calcular la serie de fibonasi el resultado

de la serie de fibonasi asignamos a la matriz, pregunto si p es igual al primer for si dice que

si a la columna de resto 2 e imprimo los resultados en la diagonal principal caso contrario

imprimo los resultados , con la variable que le dimos el limite pregunto que sea igual al

segundo contador(d==j)si dice que si procederemos a calcular el factorial el resultado

asigno a la matriz y pregunto si p es igual al primer for si dice que si a la columna le sumo

2 e imprimo los resultados en la diagonal principal caso contrario imprimo los resultados e

imprimimos normalmente la los resultados en la diagonal secundaria.

Page 43: MATRICES EN C

CODIFICADO:

#include<conio.h>

#include<stdio.h>

int matriz[10][10],vector[10],i,t,j,aux,dp,ds,x,y,op,col,fila,a,b,c,limite,f,d,l,p;

void borde()

{

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

{

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

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

}

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

{

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

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

}

}

void ingreso(int limi)

{

col=10;

fila=10;

a=1;

b=0;

p=limi%2;

if(p==0)

{

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

{

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

{

gotoxy(col,fila);printf("0");

col=col+5;

}

fila=fila+2;

col=10;

}

}

Librerías principales Declaración de

variables globales

Función para realizar el

borde

Inicialización de variables para las filas y columnas

Inicialización de variables para la serie de fibonasi

Procesos para encerar la

matriz si el limite es par

Page 44: MATRICES EN C

else

{

p=limi/2;

p=p+1;

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

{

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

{

if(p==i && p==j)

{

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

}

else

{

gotoxy(col,fila);printf("0");

}

col=col+5;

}

fila=fila+2;

col=10;

}}

col=10;

fila=10;

f=1;

d=limi;

l=1;

p=limi%2;

if (p==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]);

}

Proceso para tomar la mitad de la matriz

Procesos para encerar la

matriz si el límite es impar

Variable para la diagonal secundaria

Proceso para ver si es par

Proceso para calcular la

serie de fibonasi para

la diagonal principal

Page 45: MATRICES EN C

if(d==j)

{

f=f*l;

matriz[i][j]=f;

gotoxy(col,fila);printf("%d",matriz[i][j]);

l=l+1;

d=d-1;

}

col=col+5;

}

fila=fila+2;

col=10;

}

}

else

{

p=limi / 2;

p=p+1;

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;

if(p==i)

{

gotoxy(col-2,fila);printf("%d",matriz[i][j]);

}

else

{

gotoxy(col,fila);printf("%d",matriz[i][j]);

}

}

Proceso para calcular el

factorial para la diagonal

principal

Proceso para calcular la mitad de la matriz

Proceso para calcular

la serie de fibonasi

Pregunta para ver si estamos

en la mitad de la matriz

Page 46: MATRICES EN C

if(d==j)

{

f=f*l;

matriz[i][j]=f;

if (p==i)

{

gotoxy(col+2,fila);printf("%d",matriz[i][j]);

}

else

{

gotoxy(col,fila);printf("%d",matriz[i][j]);

}

l=l+1;

d=d-1;

}

col=col+5;

}

fila=fila+2;

col=10;

}

}

}

void imprime(int limi)

{

col=47;

fila=10;

d=limi;

p=limi%2;

if (p==0)

{

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

{

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

{

if(i==j)

{

gotoxy(col,fila);printf("%d",matriz[i][j]);

}

if(d==j)

{

gotoxy(col,fila);printf("%d",matriz[i][j]);

Proceso para calcular el factorial

para la diagonal secundaria

Pregunta para ver si estamos

en la mitad de la matriz

Función para imprimir las

diagonales

Page 47: MATRICES EN C

d=d-1;

}

col=col+5;

}

fila=fila+2;

col=47;

}

}

else

{

p=limi/2;

p=p+1;

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

{

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

{

if(i==j)

{

if(p==i )

{

gotoxy(col-2,fila);printf("%d",matriz[i][j]);

}

else

{

gotoxy(col,fila);printf("%d",matriz[i][j]);

}

}

if(d==j)

{

if (p==i)

{

gotoxy(col+2,fila);printf("%d",matriz[i][j]);

}

else

{

gotoxy(col,fila);printf("%d",matriz[i][j]);

}

d=d-1;

}

col=col+5;

}

Page 48: MATRICES EN C

fila=fila+2;

col=47;

}

}

}

void main()

{

do

{

clrscr();

borde();

gotoxy(25,2);printf("MANEJO DE MATRICES CON LAS DIAGONALES");

gotoxy(35,3);printf("MAURICIO CAGUANA");

gotoxy(5,5);printf("INGRESE EL LIMITE==> ");scanf("%d",&limite);

gotoxy(12,9);printf("M. INGRESO");

gotoxy(47,9);printf("M. DIAGONALES");

ingreso(limite);

imprime(limite);

gotoxy(20,22);printf("<<PRESIONE 1 PARA CONTINUAR o 0 PARA TERMINAR>>

");scanf("%d",&op);

}

while(op==1);

getch();

}

CORRIDO:

Llamar a las funciones

Borrado de pantalla

Llamar a las funciones

Pausa para el programa

Page 49: MATRICES EN C

14.-Relice un programa utilizando funciones que lea una matriz de enteros de n

números de filas y de n números de columnas y se muestre en pantalla la matriz

transpuesta.

ANALISIS:

Creamos la función de ingreso los datos para la cual necesitamos 2 for donde se van a

ingresar los datos de la matriz. Creamos la función para calcular la transpuesta en la cual

necesitamos dos for uno para las filas y otro para las columnas donde los números de la

matriz ingresada reasignamos a otra matriz pero en la nueva matriz los índices deben ser

cambiados las filas por columnas y viceversa, con dos for en el primer for le ponemos que

llegue hasta el numero de columnas, en el segundo for le ponemos que llegue hasta el limite

de las filas e imprimimos la matriz transpuesta.

En el programa principal debemos ingresar el limite de las filas y el limite de las columnas

y cuando llamemos a la función debemos enviar los parámetros tanto las filas como las

columnas.

CODIFICADO:

#include<conio.h>

#include<stdio.h>

int matriz[10][10],mat[10][10],i,j,nc,nf,op,col,fila;

void borde()

{

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

{

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

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

}

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

{

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

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

}

}

Librerías principales

Declaración de variables

globales

Función para realizar el

borde

Page 50: MATRICES EN C

void ingreso(int ncol, int nfila)

{

col=10;

fila=10;

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

{

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

{

gotoxy(col,fila);scanf("%d",&matriz[i][j]);

col=col+5;

}

fila=fila+2;

col=10;

}

}

void trans(int ncol, int nfila)

{

col=50;

fila=10;

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

{

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

{

mat[j][i]=matriz[i][j];

}

}

Función para ingresar

los datos en la matriz

Reasigno los datos de la

matriz a una nueva

matriz pro con los

índices cambiados

Primero va el índice de la

columna y después va el

índice de las filas

Page 51: MATRICES EN C

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

{

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

{

gotoxy(col,fila);printf("%d",mat[i][j]);

col=col+5;

}

fila=fila+2;

col=50;

}

}

void main()

{

do

{

clrscr();

borde();

gotoxy(5,5);printf("INGRESE EL NUMERO DE COLUMNAS==> ");scanf("%d",&nc);

gotoxy(5,7);printf("INGRESE EL NUMERO DE FILAS==>");scanf("%d",&nf);

gotoxy(12,9);printf("M. INGRESO");

gotoxy(47,9);printf("M. TRANSPESTA");

ingreso(nc,nf);

trans(nc,nf);

gotoxy(20,22);printf("<<PRESIONE 1 PARA CONTINUAR o 0 PARA TERMINAR>>

");scanf("%d",&op);

}

while(op==1);

getch();

}

For con límite de columnas

For con limite de las filas

Imprimo la matriz

transpuesta

Borrado de la pantalla

Llamo ala función borde

Ingreso el límite de las columnas

Ingreso el límite de las filas

Llamo a las funciones pero envió los limites

Pausa para el programa

Page 52: MATRICES EN C

CORRIDO DEL PROGRAMA: