necesito un programa k tenga un menu con matrices

murderous
29 de Junio del 2004
tengo k hacer un programa en C, donde se ingresen 2 matrices por teclado
las dimensiones tambien deben ser ingresados por teclado
y que deve tener un menu con el cual yo elija realizar una de las sgts operaciones
sumar matrices
multiplikar matrices
traponer matrices

ayudenme porfa

juan esteban ospina
29 de Junio del 2004
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<iostream.h>
typedef int tipomatriz[6][6];
/***************************************************************************
Procedimiento--->Crea el cuadrito para la matriz.*/
void cuadritos(int maxf,int maxc)
{
textcolor(BLUE);textbackground(15);
int i,j,columna;
for(i=0;i<=maxf;i++)//Para las rayas de las filas.
{
columna=15;
for(j=0;j<maxc*4+1;j++)
{
gotoxy(columna+j,(i*2)+10);
cprintf("%c",char(176));
}
}
for(i=0;i<=maxc;i++)//Para las rayas de las columnas.
{
columna=10;
for(j=0;j<maxf*2+1;j++)
{
gotoxy((i*4)+15,columna+j);
cprintf("%c",char(176));
}
}
}
/*************************************************************************
Procedimiento--->Para leer el orden de las matrices a operar.*/
void leerordenmatrices(int&maxf,int&maxc)
{
gotoxy(1,1);
cout<<"DEBE INGRESAR UN NUMERO IGUAL O MENOR A 5.";
do
{
cout<<endl<<endl<<"Ingrese el n£mero de filas: ";cin>>maxf;
}
while(maxf>=6);
do
{
cout<<"Ingrese el n£mero de columnas: ";cin>>maxc;
}
while(maxc>=6);
cuadritos(maxf,maxc);
}
/*************************************************************************
Procedimiento--->Lee las matrices a operar.*/
void leermatrices(int maxf,int maxc,tipomatriz auxMATRIZ)
{
cuadritos(maxf,maxc);
int i,j,columna;
gotoxy(1,1);
cout<<"Digite los datos de la matriz "<<maxf<<" x "<<maxc<<" por filas.";
for(i=0;i<maxf;i++)
{
columna=16;
for(j=0;j<maxc;j++)
{
gotoxy(columna,(i*2)+11);
cin>>auxMATRIZ[i][j];
columna+=4;
}
}
}
/*************************************************************************
Procedimiento--->Muestra las matrices leidas.*/
void mostrarmatrices(int maxf,int maxc,tipomatriz auxMATRIZ)
{
cuadritos(maxf,maxc);
int i,j,columna;
for(i=0;i<maxf;i++)
{
columna=16;
for(j=0;j<maxc;j++)
{
gotoxy(columna,(i*2)+11);
cout<<auxMATRIZ[i][j];
columna+=4;
}
}
}
/***************************************************************************
Procedimiento--->Muestra los n£meros pares y los impares de cada matriz.*/
void parimpar(int maxf,int maxc,tipomatriz auxMATRIZ)
{
clrscr();
cprintf("Los rojitos ser n los pares y los verdecitos los impares.");
textcolor(0);textbackground(15);
cuadritos(maxf,maxc);
int columna,i,j,residuo;
for(i=0;i<maxf;i++)
{
columna=16;
for(j=0;j<maxc;j++)
{
residuo=auxMATRIZ[i][j]%2;
if(residuo==0)
{
textcolor(RED);
}
else
{
textcolor(GREEN);
}
gotoxy(columna,(i*2)+11);
cprintf("%d",auxMATRIZ[i][j]);
columna+=4;
}
}
}
/*************************************************************************
Funci¢n--->Determina si cada n£mero de la matriz es primo o no.*/
int funcionhabersiesprimo(int numero)
{
int divisor,divisionesexactas=0;
for(divisor=1;divisor<=abs(numero);divisor++)
{
if(numero%divisor==0)
{
divisionesexactas++;
}
}
return divisionesexactas>2;
}
/***************************************************************************
Procedimiento--->Muestra los n£meros primos y no primos de cada matriz.*/
void primosytios(int maxf,int maxc,tipomatriz auxMATRIZ)
{
clrscr();
textcolor(0);textbackground(15);
cprintf("Los amarillitos ser n los no primos y los moraditos ser n los ");
cprintf("primos.");
int i,j,divisor,divisionesexactas,columna;
cuadritos(maxf,maxc);
for(i=0;i<maxf;i++)
{
columna=16;
for(j=0;j<maxc;j++)
{
if(funcionhabersiesprimo(auxMATRIZ[i][j]))
{
textcolor(5);
}
else
{
textcolor(14);
}
gotoxy(columna,(i*2)+11);
cprintf("%d",auxMATRIZ[i][j]);
columna+=4;
}
}
}
/****************************************************************************
Procedimiento--->Muestra la diagonal principal de cada matriz.*/
void diagonalesprincipales(int maxf,int maxc,tipomatriz auxMATRIZ)
{
clrscr();
int i,j,columna;
cuadritos(maxf,maxc);
for(i=0;i<maxf;i++)
{
columna=16;
for(j=0;j<maxc;j++)
{
if(i==j)
{
textcolor(6);
}
else
{
textcolor(0);
}
gotoxy(columna,(i*2)+11);
cprintf("%d",auxMATRIZ[i][j]);
columna+=4;
}
}
}


/****************************************************************************
Procedimiento--->Muestra la diagonal secundaria de cada matriz.*/
void diagonalessecundarias(int maxf,int maxc,tipomatriz auxMATRIZ)
{
clrscr();
int i,j,columna;
cuadritos(maxf,maxc);
for(i=0;i<maxf;i++)
{
columna=16;
for(j=0;j<maxf;j++)
{
if(i+j==maxc-1)
{
textcolor(6);
}
else
{
textcolor(0);
}
gotoxy(columna,(i*2)+11);
cprintf("%d",auxMATRIZ[i][j]);
columna+=4;
}
}
}
/****************************************************************************
Procedimiento--->Da el resultado de la suma de la matriz 1 mas matriz 2.*/
void sumamatrices(int maxf,int maxc,tipomatriz &matriz1,tipomatriz &matriz2)
{
int i,j,columna;
tipomatriz auxmatriz3;
clrscr();
cuadritos(maxf,maxc);
for(i=0;i<maxf;i++)
{
columna=16;
for(j=0;j<maxc;j++)
{
auxmatriz3[i][j]=matriz1[i][j]+matriz2[i][j];
gotoxy(columna,(i*2)+11);
cprintf("%d",auxmatriz3[i][j]);
columna+=4;
}
}
}

/****************************************************************************
Procedimiento--->Da el resultado de la multiplicaci¢n de la matriz 1 por la
matriz 2.*/
void multiplicamatrices(int maxf,int maxc,tipomatriz &matriz1,tipomatriz &matriz2)
{
int i,j,k,columna,m,n;
tipomatriz auxmatriz3;
clrscr();
cuadritos(maxf,maxc);
for(i=0;i<maxf;i++)
{
for(j=0;j<maxc;j++)
{
auxmatriz3[j][i]=0;
for(k=0;k<maxf;k++)
{
auxmatriz3[j][i]=auxmatriz3[j][i]+(matriz1[j][k] * matriz2[k][i]);
}
}
}
for(m=0;m<maxf;m++)
{
columna=16;
for(n=0;n<maxc;n++)
{
gotoxy(columna,(m*2)+11);
cout<<auxmatriz3[m][n];
columna+=4;
}
}
}
/****************************************************************************
Procedimiento--->muestra la sumatoria interna de cada matriz.*/
void sumatoriainterna(int maxf,int maxc,tipomatriz auxmatriz)
{
clrscr();
int i,j,suma=0;
for(i=0;i<maxf;i++)
{
for(j=0;j<maxc;j++)
{
suma=suma+auxmatriz[i][j];
}
}
textcolor(14);
gotoxy(10,10);
cprintf("La suma interna de los elementos es: %d",suma);
}

/***************************************************************************
Procedimiento--->Para sacar el promedio interno de los elementos de la
matriz.*/
void promediointerno(int maxf,int maxc,tipomatriz auxmatriz)
{
clrscr();
float i,j,suma=0,promedio=0;
for(i=0;i<maxf;i++)
for(j=0;j<maxc;j++)
{
suma=suma+auxmatriz[i][j];
}
promedio=suma/(maxf*maxc);
textcolor(14);
gotoxy(10,10);
cprintf("El promedio interno de los elementos es: %.2f",promedio);
}





/****************************************************************************
Procedimiento--->Muestra: Presione una tecla para continuar..*/
void press()
{
textcolor(0);textbackground(15);
int i;
gotoxy(14,23);cout<<char(201);//É
gotoxy(14,25);cout<<char(200);// È
gotoxy(57,23);cout<<char(187); //»
gotoxy(57,25);cout<<char(188);//¼
gotoxy(54,23);cout<<char(201);
gotoxy(54,23);cout<<char(201);
for(i=0;i<42;i++)
{
gotoxy(15+i,23);cout<<char(205);
gotoxy(15+i,25);cout<<char(205);
}
gotoxy(15,24);
cprintf("PRESIONA CUALQUIER TECLA PARA CONTINUAR...");
getch();
}
/*************************************************************************
Programa principal.*/
main()
{
int opc;
int maxf=0,maxc=0;
tipomatriz matriz1,matriz2,matriz3;
clrscr();
do
{
textcolor(0);textbackground(15);
clrscr();
cout<<" >>>>>MENU PRINCIPAL<<<<<"<<endl<<endl;
cout<<"0--->Para salir del programa."<<endl<<endl<<endl;
cout<<"1--->Para leer el orden de las matrices."<<endl;
cout<<"2--->Para leer la matriz 1."<<endl;
cout<<"3--->Para leer la matriz 2."<<endl;
cout<<"4--->Presentar la matriz leida (1)."<<endl;
cout<<"5--->Presentar la matriz leida (2)."<<endl;
cout<<"6--->Mostrar n£meros pares e impares (1) y (2)."<<endl;
cout<<"7--->Mostrar n£meros primos y no primos (1) y (2)."<<endl;
cout<<"8--->Mostrar la diagonal principal de cada matriz."<<endl;
cout<<"9--->Mostrar la diagonal secundaria de cada matriz."<<endl;
cout<<"10-->Mostrar el resultado de la suma entre las dos matrices."<<endl;
cout<<"11-->Mostrar el resultado de la multiplicaci¢n entre las dos matrices."<<endl;
cout<<"12-->Mostrar el resultado de la sumatoria interna de cada matriz."<<endl;
cout<<"13-->Mostrar el promedion interno de cada matriz."<<endl<<endl<<endl;
cout<<"Seleccione una opci¢n: ";
scanf("%d",&opc);
switch(opc)
{
case 1: clrscr();
gotoxy(2,8);
cout<<"SE MOSTRARA LA FORMA DE LA MATRIZ....";
leerordenmatrices(maxf,maxc);
press();
break;
case 2: if((maxf>0)&&(maxc>0))
{
clrscr();
gotoxy(5,7);
cprintf("Matriz 1");
leermatrices(maxf,maxc,matriz1);
press();
}
else
{
clrscr();
gotoxy(10,10);
cout<<"DEBE INGRESAR EL ORDEN DE LA MATRIZ (Opci¢n 1).";
press();
}
break;
case 3: if((maxf>0)&&(maxc>0))
{
clrscr();
gotoxy(5,7);
cprintf("Matriz 2");
leermatrices(maxf,maxc,matriz2);
press();
}
else
{
clrscr();
gotoxy(10,10);
cout<<"DEBE INGRESAR EL ORDEN DE LA MATRIZ (Opci¢n 1).";
press();
}
break;
case 4: if((maxf>0)&&(maxc>0))
{
clrscr();
cout<<"Esta es la matriz 1.";
mostrarmatrices(maxf,maxc,matriz1);
press();
}
else
{
clrscr();
gotoxy(10,10);
cout<<"DEBE INGRESAR EL ORDEN DE LA MATRIZ (Opci¢n 1).";
press();
}
break;
case 5: if((maxf>0)&&(maxc>0))
{
clrscr();
cout<<"Esta es la matriz 2.";
mostrarmatrices(maxf,maxc,matriz2);
press();
}
else
{
clrscr();
gotoxy(10,10);
cout<<"DEBE INGRESAR EL ORDEN DE LA MATRIZ (Opci¢n 1).";
press();
}
break;
case 6: if((maxf>0)&&(maxc>0))
{
parimpar(maxf,maxc,matriz1);
gotoxy(5,7);
cprintf("Matriz 1");
press();
parimpar(maxf,maxc,matriz2);
gotoxy(5,7);
cprintf("Matriz 2");
press();
}
else
{
clrscr();
gotoxy(10,10);
cout<<"DEBE INGRESAR EL ORDEN DE LA MATRIZ (Opci¢n 1).";
press();
}
break;
case 7: if((maxf>0)&&(maxc>0))
{
primosytios(maxf,maxc,matriz1);
gotoxy(5,7);
cprintf("Matriz 1");
press();
primosytios(maxf,maxc,matriz2);
gotoxy(5,7);
cprintf("Matriz 2");
press();
}
else
{
clrscr();
gotoxy(10,10);
cout<<"DEBE INGRESAR EL ORDEN DE LA MATRIZ (Opci¢n 1).";
press();
}
break;
case 8: if((maxf>0)&&(maxc>0)&&(maxf==maxc))
{
diagonalesprincipales(maxf,maxc,matriz1);
gotoxy(5,7);
cprintf("Matriz 1");
press();
diagonalesprincipales(maxf,maxc,matriz2);
gotoxy(5,7);
cprintf("Matriz 2");
press();
}
else
{
clrscr();
gotoxy(10,9);
cout<<"Su error fue--->";
gotoxy(10,11);
cout<<"-DEBE INGRESAR EL ORDEN DE LA MATRIZ (Opci¢n 1). ¢";
gotoxy(10,12);
cout<<"-DEBEN SER IGUALES EL NUMERO DE COLUMNAS Y FILAS.";
press();
}
break;
case 9: if((maxf>0)&&(maxc>0)&&(maxf==maxc))
{
diagonalessecundarias(maxf,maxc,matriz1);
gotoxy(5,7);
cprintf("Matriz 1");
press();
diagonalessecundarias(maxf,maxc,matriz2);
gotoxy(5,7);
cprintf("Matriz 2");
press();
}
else
{
clrscr();
gotoxy(10,9);
cout<<"Su error fue--->";
gotoxy(10,11);
cout<<"-DEBE INGRESAR EL ORDEN DE LA MATRIZ (Opci¢n 1). ¢";
gotoxy(10,12);
cout<<"-DEBEN SER IGUALES EL NUMERO DE COLUMNAS Y FILAS.";
press();
}
break;
case 10:if((maxf>0)&&(maxc>0))
{
sumamatrices(maxf,maxc,matriz1,matriz2);
gotoxy(5,7);
cprintf("El resultado de la suma es:");
press();
}
else
{
clrscr();
gotoxy(10,10);
cout<<"DEBE INGRESAR EL ORDEN DE LA MATRIZ (Opci¢n 1).";
press();
}
break;
case 11:if((maxf>0)&&(maxc>0)&&(maxf==maxc))
{
multiplicamatrices(maxf,maxc,matriz1,matriz2);
gotoxy(5,7);
cprintf("El resultado de la multiplicaci¢n es:");
press();
}
else
{
clrscr();
gotoxy(10,9);
cout<<"Su error fue--->";
gotoxy(10,11);
cout<<"-DEBE INGRESAR EL ORDEN DE LA MATRIZ (Opci¢n 1). ¢";
gotoxy(10,12);
cout<<"-DEBEN SER IGUALES EL NUMERO DE COLUMNAS Y FILAS.";
press();
}
break;
case 12:if((maxf>0)&&(maxc>0))
{
sumatoriainterna(maxf,maxc,matriz1);
gotoxy(5,7);
cprintf("Matriz 1");
press();
sumatoriainterna(maxf,maxc,matriz2);
gotoxy(5,7);
cprintf("Matriz 2");
press();
}
else
{
clrscr();
gotoxy(10,10);
cout<<"DEBE INGRESAR EL ORDEN DE LA MATRIZ (Opci¢n 1).";
press();
}
break;
case 13:if((maxf>0)&&(maxc>0))
{
promediointerno(maxf,maxc,matriz1);
gotoxy(5,7);
cprintf("Matriz 1");
press();
promediointerno(maxf,maxc,matriz2);
gotoxy(5,7);
cprintf("Matriz 2");
press();
}
else
{
clrscr();
gotoxy(10,10);
cout<<"DEBE INGRESAR EL ORDEN DE LA MATRIZ (Opci¢n 1).";
press();
}
break;
}
}
while(opc!=0);
clrscr();
cout<<endl<<endl<<endl;
cout<<"copy right by Juan Esteban Ospina Herrera.....in June 2004.";
getch();
return 0;
}