matrices en c
Post on 10-Mar-2016
235 Views
Preview:
DESCRIPTION
TRANSCRIPT
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.
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
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
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
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
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
{
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
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
}
}
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
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
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
}
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
{
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
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
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:
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:
#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
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
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
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
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
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
}
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
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
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
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
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
{
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
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
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
{
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
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
}
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
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
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
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
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
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
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
}
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
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.
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
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
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
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
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;
}
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
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
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
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
CORRIDO DEL PROGRAMA:
top related