C/Visual C - Ayuda urgente con matrices

 
Vista:

Ayuda urgente con matrices

Publicado por Lilia Flores (1 intervención) el 25/10/2005 21:13:05
Hola voy en tercer semestre de la carrera de ingenieria en sistemas y necesito hacer un programa que sume, reste y multiplique arreglos esto es lo que llevo sin embargo no puedo hacer las operaciones espero que alguien me pueda ayudar.
De antemano muchas gracias:

#include <iostream>
typedef int Matriz[20][20],Matrizb[20][20],Matrizc[20][20];
int main()
{
Matriz A; //Varianle de matriz de dos dimensiones
int N,M; //Dimensiones de la matriz A
int ren,col; //Variables auxiliares para la matriz A
int renM,colM; //Variables en las que se guardaran las coordenadas del valor mayor
int s; //Variable de salida
std::cout<<"Cuantos renglones tiene el determiante A?\n";
std::cin>>N;
std::cout<<"Cuantas columnas tiene el determinante A?\n";
std::cin>>M;
// Pide los datos para la matriz
for (ren=1; ren < N; ren++)
for (col=0; col < M; col++)
{
std::cout<<"Teclea el valor para el elemento ";
std::cout<<ren<<","<<col<<" ";
std::cin>>A[ren][col];
}
// Muestra la matriz
for (ren=1; ren<N; ren++)
{
for (col=0; col<M; col++)
std::cout<<A[ren][col]<<"\t";
}
std::cout<<"\n";
Matrizb B; //Varianle de matriz de dos dimensiones
int Nb,Mb; //Dimensiones de la matriz B
int renb,colb; //Variables auxiliares para la busqueda
int renbM,colbM;//Variables en las que se guardaran las coordenadas
//del valor mayor
std::cout<<"Cuantos renglones tiene el determiante B? ";
std::cin>>Nb;
std::cout<<"Cuantas columnas tiene el determinante B? ";
std::cin>>Mb;
//Pide datos para la matriz B
for (renb=1; renb < Nb; renb++)
for (colb=0; colb < Mb; colb++)
{
std::cout<<"Teclea el valor para el elemento\n";
std::cout<<renb<<","<<colb<<" ";
std::cin>>B[renb][colb];
}
//Muestra la matriz
for (renb=1; renb<Nb; renb++)
{
for (colb=0; colb<Mb; colb++)
std::cout<<B[renb][colb]<<"\t";
}
std::cout<<"\n";
int i,j;
i=ren,renb;
j=col,colb;
Matrizb C; //Varianle de matriz de dos dimensiones
int Nc,Mc; //Dimensiones de la matriz B
int renc,colc; //Variables auxiliares para la busqueda
int rencM,colcM;
for(i=1;i<N&&Nb;i++)
for(j=0;j<M&&Mb;j++)
{
C[renc][colc]=(A[i][j]+B[i][j]);

}
std::cout<<"El resultado es:";
std::cout<<renc<<colc;
std::cin>>s;
return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda urgente con matrices

Publicado por Javier (1 intervención) el 26/10/2005 20:50:17
hooola lilia, tengo un programa de operaciones con matrices, solo que esta compilado bajo turbo C 3.0, espero que te sirva de referencia, por culaquier du escribeme


/* Instituto de Estudios Superiores del Estado

Ingenieria en Sistemas Computacionales

Asignatura: Estructura de Datos

Programa: "Matrices con Numeros (Operaciones/ordenamiento"

*/

#include <stdio.h>
#include <conio.h>

#define n_f 5
#define n_c 5

void captura (int n, char iden);
void mostrar (int n,char iden);
void sumar (int op1, int op2, int res);
void restar (int op1, int op2, int res);
void multiplicar (int op1, int op2, int res);
void ordenar_f (int n, int res);
void ordenar_c (int n, int res);
void menor (int n);
void mayor (int n);
void promedio (int n);

int matriz[n_f][n_c][10],nf,nc,i,j,m,z;

void main ()
{
char opc,opco,opcm;
do
{
clrscr();
printf ("\n\n\n");
printf ("\t\tOperaciones con matrices\n\n\n");
printf ("\t*** M e n u ***\n\n");
printf ("\t1. Capturar\n");
printf ("\t2. Mostrar\n");
printf ("\t3. Suma de Matrices\n");
printf ("\t4. Resta de Matrices\n");
printf ("\t5. Multiplicacion de Matrices\n");
printf ("\t6. Ordenar por filas y columnas a la matriz => \n");
printf ("\t7. Valor Menor, Mayor y Promedio => \n\n");
printf ("\t8. Salir\n\n");
printf ("\t\tOpcion ");
opc=getch();
switch(opc)
{
case '1':clrscr();
printf ("\n\n\tCapturando las matrices A y B\n\n");
printf ("\t No. de Filas: ");
scanf("%d",&nf);
printf ("\tNo. de Columnas: ");
scanf("%d",&nc);
printf("\n");
captura (0,'A');
captura (1,'B');
break;
case '2':clrscr();
printf ("\n\n\tLas matrices capturadas son:\n\n");
mostrar(0,'A');
mostrar(1,'B');
getch();
break;
case '3':clrscr();
printf ("\n\n\tLa Suma de las matrices A y B es:\n\n");
sumar (0,1,2);
getch();
break;
case '4':clrscr();
printf ("\n\n\tLa Resta de las matrices A y B es:\n\n");
restar (0,1,3);
getch();
break;
case '5':clrscr();
printf ("\n\n\tLa Multiplicacion de las matrices A y B es:\n\n");
multiplicar (0,1,4);
getch();
break;
case '6':do
{
clrscr();
printf ("\n\n\t\t* * Menu ordenar * *\n\n\n");
printf ("\t1. Matriz A\n");
printf ("\t2. Matriz B\n");
printf ("\t3. Volver\n\n");
printf ("\tOpcion ");
opco=getch();
switch(opco)
{
case '1':clrscr();
printf ("\n\tLa matriz original capturado es:\n\n");
mostrar(0,'A');
printf ("\n\n\n");
ordenar_f(0,7);
printf ("\n\n\n");
ordenar_c(0,6);
getch();
break;
case '2':clrscr();
printf ("\n\tLa matriz original capturado es:\n\n");
mostrar(1,'B');
printf ("\n\n\n");
ordenar_f(1,7);
printf ("\n\n\n");
ordenar_c(1,6);
getch();
break;
}
}
while(opco!='3');
break;
case '7':do
{
clrscr();
printf ("\n\n\t* * Menu Menor, Mayor, Promedio * *\n\n\n");
printf ("\t1. Matriz A\n");
printf ("\t2. Matriz B\n");
printf ("\t3. Volver\n\n");
printf ("\tOpcion ");
opcm=getch();
switch(opcm)
{
case '1':clrscr();
menor(0);
mayor(0);
promedio(0);
getch();
break;
case '2':clrscr();
menor(1);
mayor(1);
promedio(1);
getch();
break;
}
}
while(opcm!='3');
break;
}
}
while(opc!='8');
}

void captura(int n, char iden)
{
int i,j;
printf ("\n\tMatriz %c:\n ",iden);
printf ("\n");
for (i=0;i<nf;i++)
for (j=0;j<nc;j++)
{
printf ("\tElemento [%d][%d]: ",i+1,j+1);
scanf ("%d",&matriz[i][j][n]);
}
printf("\n\n");
}

void mostrar (int n, char iden)
{
int i,j;
printf ("\tMatriz %c:\n",iden);
printf ("\n");
for (i=0;i<nf;i++)
{
for (j=0;j<nc;j++)
printf (" %4d\t", matriz[i][j][n]);
printf ("\n");
}
}

void sumar (int op1, int op2, int res)
{
int i,j;
for (i=0;i<nf;i++)
{
for (j=0;j<nc;j++)
{
matriz[i][j][res] += matriz[i][j][op1] + matriz[i][j][op2];
}
}
printf("\n\tResultado:\n\n");
for (i=0;i<nf;i++)
{
for (j=0;j<nc;j++)
printf ("%4d",matriz[i][j][op1]);
if (i!=1)
printf (" ");
else
printf (" + ");
for (j=0;j<nc;j++)
printf("%4d",matriz[i][j][op2]);
if(i!=1)
printf (" ");
else
printf (" = ");
for (j=0;j<nc;j++)
printf ("%4d",matriz[i][j][res]);
printf ("\n");
}
}

void restar (int op1, int op2, int res)
{
int i,j;
for (i=0;i<nf;i++)
{
for (j=0;j<nc;j++)
{
matriz[i][j][res] += matriz[i][j][op1] - matriz[i][j][op2];
}
}
printf("\nResultado:\n\n");
for (i=0;i<nf;i++)
{
for (j=0;j<nc;j++)
printf ("%4d",matriz[i][j][op1]);
if (i!=1)
printf (" ");
else
printf (" - ");
for (j=0;j<nc;j++)
printf("%4d",matriz[i][j][op2]);
if(i!=1)
printf (" ");
else
printf (" = ");
for (j=0;j<nc;j++)
printf ("%4d",matriz[i][j][res]);
printf ("\n");
}
}

void multiplicar (int op1, int op2, int res)
{
int i,j,k;
for (i=0;i<nf;i++)
{
for (j=0;j<nc;j++)
{
for (k=0;k<nc;k++)
matriz[i][j][res] += matriz[i][k][op1] * matriz[k][j][op2];
}
}
printf("\nResultado:\n\n");
for (i=0;i<nf;i++)
{
for (j=0;j<nc;j++)
printf ("%4d",matriz[i][j][op1]);
if (i!=1)
printf (" ");
else
printf (" X ");
for (j=0;j<nc;j++)
printf("%4d",matriz[i][j][op2]);
if(i!=1)
printf (" ");
else
printf (" = ");
for (j=0;j<nc;j++)
printf ("%4d",matriz[i][j][res]);
printf ("\n");
}
}

void ordenar_f(int n, int res)
{
int i,j,k,aux;
for (i=0;i<nf;i++)
{
for (j=0;j<nc;j++)
matriz[i][j][res]=matriz[i][j][n];
}
for (j=0;j<nf;j++)
{
for (i=0;i<nc-1;i++)
{
for (k=i+1;k<nc;k++)
{
if (matriz[j][i][res] > matriz[j][k][res])
{
aux = matriz[j][i][res];
matriz[j][i][res] = matriz[j][k][res];
matriz[j][k][res] = aux;
}
}
}
}
printf ("\n\tOrdenado por filas\n\n");
for (i=0;i<nf;i++)
{
for (j=0;j<nc;j++)
printf (" %4d\t", matriz[i][j][res]);
printf ("\n");
}
printf ("\n");
}

void ordenar_c(int n, int res)
{
int i,j,k,aux;
for (i=0;i<nf;i++)
{
for (j=0;j<nc;j++)
matriz[i][j][res]=matriz[i][j][n];
}
for (j=0;j<nc;j++)
{
for (i=0;i<nf-1;i++)
{
for (k=i+1;k<nf;k++)
{
if (matriz[i][j][res] > matriz[k][j][res])
{
aux = matriz[i][j][res];
matriz[i][j][res] = matriz[k][j][res];
matriz[k][j][res] = aux;
}
}
}
}
printf ("\n\tOrdenado por culumnas\n\n");
for (i=0;i<nf;i++)
{
for (j=0;j<nc;j++)
printf (" %4d\t", matriz[i][j][res]);
printf ("\n");
}
printf ("\n");
}

void menor(int n)
{
int i,j,auxm=1,posf=0,posc=0;
for (i=0;i<nf;i++)
{
for (j=0;j<nc;j++)
{
if (auxm > matriz[i][j][n])
{
auxm=matriz[i][j][n];
posf=i;
posc=j;
}
}
}
printf ("\n\n\tEl numero menor es: %d posicion [%d][%d] ",auxm,posf+1,posc+1);
}

void mayor(int n)
{
int i,j,auxM=0,posf=0,posc=0;
for (i=0;i<nf;i++)
{
for (j=0;j<nc;j++)
{
if (auxM < matriz[i][j][n])
{
auxM=matriz[i][j][n];
posf=i;
posc=j;
}
}
}
printf ("\n\n\tEl numero mayor es: %d posicion [%d][%d] ",auxM,posf+1,posc+1);
}

void promedio(int n)
{
int i,j;
float acu=0,p;
for (i=0;i<nf;i++)
{
for (j=0;j<nc;j++)
{
acu+=matriz[i][j][n];
}
}
p = acu/(nf*nc);
printf ("\n\n\tEl promedio la matriz es: %4.2f",p);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar