Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda con Matrices C++

Estas en el tema de Ayuda con Matrices C++ en el foro de C/C++ en Foros del Web. Hola, les escribo ya que por mas que intente no consigo comprender que debo hacer.. Nuestro profesor nos mando a crear un Programa en C++ ...
  #1 (permalink)  
Antiguo 09/02/2010, 21:58
Avatar de JoseAlejandro_Realza  
Fecha de Ingreso: agosto-2008
Ubicación: Maracay - Venezuela
Mensajes: 192
Antigüedad: 15 años, 9 meses
Puntos: 2
Exclamación Ayuda con Matrices C++

Hola, les escribo ya que por mas que intente no consigo comprender que debo hacer.. Nuestro profesor nos mando a crear un Programa en C++ que debe realizar ciertas tareas, pero el nunca nos explico nada similar.. todas las pruebas eran escritas, y ahora nos dio una semana para crear un programa...

Me gustaría si no es problema, me dieran el código completo, ya que soy programador pero orientado a Web.. Espero puedan ayudarme lo mas pronto posible xD

Problema:

Crear un programa que permita sumar y multiplicar matrices, leidas desde el teclado, de tamaño 4x4, y permita visualizar las matrices con sus resultados.


Muchas Gracias
__________________
Tu Guía Empresarial http://www.empresarial.org.ve Soluciones Empresariales

Atte: José Alejandro Realza
  #2 (permalink)  
Antiguo 09/02/2010, 22:58
Avatar de fradve  
Fecha de Ingreso: abril-2009
Mensajes: 157
Antigüedad: 15 años
Puntos: 7
Respuesta: Ayuda con Matrices C++

Postea el código que has realizado para ver la forma de ayudarte
__________________
En programación hay mil y un formas de hacer lo mismo...
  #3 (permalink)  
Antiguo 10/02/2010, 14:57
 
Fecha de Ingreso: febrero-2010
Mensajes: 2
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Ayuda con Matrices C++

Bueno la verdad es ke yo tambn necesito hacer ese mismo programa y no encuentro como obtener el resultado de la multiplicacion de las matrices!! Lo ke yo he adelantado a sido esto:

#include<iostream.h>
#include<conio.h>
#include<process.h>
#define fil 4
#define col 4
void main()
{
system("color 80");
int a[fil][col],b[fil][col],c[fil][col];
int op,i,j,k;
cout<<"*****PROGRAMA PARA SUMAR O MULTIPLICAR MATRICES*****"<<endl;
cout<<" Menu"<<endl;
cout<<"1. Suma de Matrices"<<endl;
cout<<"2. Multiplicacion de Matrices"<<endl;
cout<<"Presione el numero de la operacion que desea realizar"<<endl;
cin>>op;
system("cls");
switch(op)
{
case 1:
for(i=0;i<fil;i++)
{
for(j=0;j<col;j++)
{
cout<<"Ingrese los datos de la matriz A:"<<endl;
cin>>a[fil][col];
}
}
system("cls");
for(i=0;i<fil;i++)
{
for(j=0;j<col;j++)
{
cout<<"Ingrese los datos de la matriz B:"<<endl;
cin>>b[fil][col];
}
}
c[fil][col]=a[fil][col]+b[fil][col];
cout<<"El resultado de la suma es:"<<c[fil][col]<<endl;
break;
case 2:
  #4 (permalink)  
Antiguo 10/02/2010, 16:31
Avatar de fradve  
Fecha de Ingreso: abril-2009
Mensajes: 157
Antigüedad: 15 años
Puntos: 7
Respuesta: Ayuda con Matrices C++

El codigo que postea caf2021 parece estar bien los ingresos, pero le faltan los procesos, aquí les coloco solución para el problema de ambos. El programa está compilado en turbo c++ 3.0.

Código C++:
Ver original
  1. #include<iostream.h>
  2. #include<conio.h>
  3. #include<stdio.h>
  4.  
  5. int matrizA[4][4],matrizB[4][4],matrizR[4][4];
  6.  
  7. void presentar(int fila,int columna,int matriz[4][4])
  8. {
  9.   int i=0,j=0;
  10.  
  11.   for(i=0;i<4;i++)
  12.   {
  13.     for(j=0;j<4;j++)
  14.     {
  15.       gotoxy(columna+j*4,fila+i);
  16.       cout << matriz[i][j];
  17.     }
  18.   }
  19. }
  20.  
  21. void sumar()
  22. {
  23.   int i=0,j=0;
  24.  
  25.   for(i=0;i<4;i++)
  26.   {
  27.     for(j=0;j<4;j++)
  28.      matrizR[i][j]=matrizA[i][j]+matrizB[i][j];
  29.   }
  30.   gotoxy(5,1); cout << "MATRIZ A";
  31.   gotoxy(35,1); cout << "MATRIZ B";
  32.   presentar(3,5,matrizA);
  33.   presentar(3,32,matrizB);
  34.   cout << "\nLA SUMA DE A + B es:";
  35.   presentar(12,30,matrizR);
  36. }
  37.  
  38. void multiplicar()
  39. {
  40.   int i=0,k=0,l=0;
  41.   int acum=0;
  42.  
  43.   for(i=0;i<4;i++)
  44.   {
  45.     for(k=0;k<4;k++)
  46.     {
  47.       for(l=0;l<4;l++)
  48.       {
  49.     acum=acum+matrizA[i][l]*matrizB[l][k];
  50.       }
  51.       matrizR[i][k]=acum;
  52.       acum=0;
  53.     }
  54.   }
  55.   gotoxy(5,1); cout << "MATRIZ A";
  56.   gotoxy(35,1); cout << "MATRIZ B";
  57.   presentar(3,5,matrizA);
  58.   presentar(3,32,matrizB);
  59.   cout << "\nLA MULTIPLICACION DE A * B es:";
  60.   presentar(12,30,matrizR);
  61. }
  62.  
  63. void ingresar()
  64. {
  65.   int i=0,j=0;
  66.  
  67.   cout << "INGRESO DE MATRIZ A           INGRESO MATRIZ B";
  68.   for(i=0;i<4;i++)
  69.   {
  70.     for(j=0;j<4;j++)
  71.     {
  72.       gotoxy(5+j*4,3+i);
  73.       cin >> matrizA[i][j];
  74.     }
  75.   }
  76.  
  77.   for(i=0;i<4;i++)
  78.   {
  79.     for(j=0;j<4;j++)
  80.     {
  81.       gotoxy(32+j*4,3+i);
  82.       cin >> matrizB[i][j];
  83.     }
  84.   }
  85. }
  86.  
  87. void menu()
  88. {
  89.   char tecla;
  90.  
  91.   do
  92.   {
  93.     clrscr();
  94.     gotoxy(15,2); cout << "*** MENU PRINCIPAL ***";
  95.     gotoxy(10,6); cout << "[1] INGRESAR MATRICES";
  96.     gotoxy(10,8); cout << "[2] SUMA";
  97.     gotoxy(10,10); cout << "[3] MULTIPLICACION";
  98.     gotoxy(10,12); cout << "[4] SALIR";
  99.     gotoxy(10,16); cout << "OPCION: ";
  100.     tecla=getche();
  101.     clrscr();
  102.     switch(tecla)
  103.     {
  104.       case '1': ingresar();
  105.         break;
  106.       case '2': sumar();
  107.         break;
  108.       case '3': multiplicar();
  109.         break;
  110.     }
  111.     getch();
  112.   }while(tecla!='4');
  113. }
  114.  
  115. void main()
  116. {
  117.   menu();
  118. }
__________________
En programación hay mil y un formas de hacer lo mismo...
  #5 (permalink)  
Antiguo 10/02/2010, 17:28
 
Fecha de Ingreso: febrero-2010
Mensajes: 2
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Ayuda con Matrices C++

Gracias amigo de verdad... Pero ese profesor es demasiado estricto, solo nos deja compilar con Visual Studio 6.0
Solo necesito ke me expliques como llegar al resultado de la multiplicacion de las 2 matrices
  #6 (permalink)  
Antiguo 10/02/2010, 23:45
Avatar de fradve  
Fecha de Ingreso: abril-2009
Mensajes: 157
Antigüedad: 15 años
Puntos: 7
Respuesta: Ayuda con Matrices C++

Ok, no hay ningún problema haber te indico:

Código C++:
Ver original
  1. int i=0,k=0,l=0;
  2.   int acum=0; //incializamos el acumulador en 0
  3.  
  4.   for(i=0;i<4;i++)
  5.   {
  6.     for(k=0;k<4;k++)
  7.     {
  8.       for(l=0;l<4;l++)
  9.       {
  10.     acum=acum+matrizA[i][l]*matrizB[l][k];
  11.       }
  12.       matrizR[i][k]=acum;
  13.       acum=0;
  14.     }
  15.   }

i,k y l son solo variables contadores de los for respectivamente todas ellas inicializadas con cero.

como imagino has de saber en la multiplicación de matrices se va multiplicando cada elmento de la fila de una matriz por cada elemento de la columna actual o correspondiente de la otra, y la suma de esos productos es el resultado en la posición actual, así:

|1 2 3 4| |3 4 5 1|
|2 3 1 4| |3 4 1 6|
|3 4 5 7| |5 2 3 1|
|4 3 4 5| |3 6 7 8|

el for(i=0;i<4;i++)
indica que inciamos en la fila cero la primera matriz que es 1 2 3 4 5

entonces vamos al otro for(k=0;k<4;k++)
indicamos de que columna de la otra matriz se trata en este caso de la columna cero:
3
3
5
3
luego vamos al otro for(l=0;l<4;l++)
que nos permitirá recorrer cada elemento de la fila y columna respectivamente, así

con l = 0, i=0, k = 0

tenemos:

acum= acum + matrizA[i][l]*matrizB[l][k]

ya que hay que ir acumulado los valores

con números sería:

acum=acum + 1*3
acum = 3

incremento l=1

acum = acum + 2*3
acum=9

incremento l=2

acum = acum + 3*5
acum=24

incremento l=3

acum = acum + 4*3
acum=36

entonces ese 36 corresponde al primer elemento de la matriz productos
que sería la posición i,k que seria 0,0

y ahora regresamos a for(k=0;k<4;k++)
pero ya k incrementado entonces k = 1

y volvemos a for(l=0;l<4;l++)

tenemos i=0,k=1,l=0

Como se incrementó k nos vamos por la siguiente columna de la matrizB, pero la fila de la matrizA se mantiene, entonces

l=0
acum=acum + 1*4
acum = 4

incremento l=1

acum = acum + 2*4
acum=12

incremento l=2

acum = acum + 3*2
acum=18

incremento l=3

acum = acum + 4*6
acum=42

entonces 42 corresponde al segundo elemento de la matriz de resultado o producto, es decir la posición y i,k que es 0,1

Y así hasta que la primera fila de la matriz A se multiplique por todas la columnas de la matrizB, una vez hecho esto con la primera fila se procede de la misma manera con la siguiente fila de la matriz A la multiplicamos por cada columna de la matrizB, obteniendo de esta manera la matriz producto.

Espero haber sido claro, cualquier duda posteanla.
__________________
En programación hay mil y un formas de hacer lo mismo...
  #7 (permalink)  
Antiguo 26/08/2010, 22:13
 
Fecha de Ingreso: agosto-2010
Mensajes: 1
Antigüedad: 13 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Ayuda con Matrices C++

Cita:
Iniciado por caf2021 Ver Mensaje
Bueno la verdad es ke yo tambn necesito hacer ese mismo programa y no encuentro como obtener el resultado de la multiplicacion de las matrices!! Lo ke yo he adelantado a sido esto:

#include<iostream.h>
#include<conio.h>
#include<process.h>
#define fil 4
#define col 4
void main()
{
system("color 80");
int a[fil][col],b[fil][col],c[fil][col];
int op,i,j,k;
cout<<"*****PROGRAMA PARA SUMAR O MULTIPLICAR MATRICES*****"<<endl;
cout<<" Menu"<<endl;
cout<<"1. Suma de Matrices"<<endl;
cout<<"2. Multiplicacion de Matrices"<<endl;
cout<<"Presione el numero de la operacion que desea realizar"<<endl;
cin>>op;
system("cls");
switch(op)
{
case 1:
for(i=0;i<fil;i++)
{
for(j=0;j<col;j++)
{
cout<<"Ingrese los datos de la matriz A:"<<endl;
cin>>a[fil][col];
}
}
system("cls");
for(i=0;i<fil;i++)
{
for(j=0;j<col;j++)
{
cout<<"Ingrese los datos de la matriz B:"<<endl;
cin>>b[fil][col];
}
}
c[fil][col]=a[fil][col]+b[fil][col];
cout<<"El resultado de la suma es:"<<c[fil][col]<<endl;
break;
case 2:
NO TIENES LO QUE SIGUEE ??
  #8 (permalink)  
Antiguo 28/08/2010, 12:30
 
Fecha de Ingreso: julio-2010
Mensajes: 29
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Ayuda con Matrices C++

yo podria hacerlo en c++ pero no entiendo lo que quieres?
que datos ingresas?
o la tabla de 4*4 son constante?
si explicas bien el problema yo lo podria hacer en c++

Etiquetas: c++, matriz
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:05.