Hola necesito que alguien me ayude debo hacer un programa que multiplique dos matrices maximo de[4][4] muchas gracias. prometo al que me ayude dar mi voto por una buena calificacion y lo eligo como mejor respuesta gracias.
Copyright © 2024 Q2A.ES - All rights reserved.
Answers & Comments
Verified answer
en esta pagina te dan el codigo que necesitas
http://www.mygnet.net/codigos/c++/13/1128/
Hola!!! espero poder ayudarte, esta algo largo el código, pero esta totalmente completo, esta hecho en visual studio .net en lenguaje c y otro en lenguaje c++ cualquiera de los dos funciona a la perfección (eso espero :) )
Te puse muchos comentarios en el programa para hacerlo más entendible.
saludos.
P.D. TE PUSE EL CODIGO C++ AQUI, PERO EL EDITOR DE RESPUESTAS LO PRESENTA MUY MAL, YA QUE CAMBIA VARIAS COSAS (POR EJEMPLO UN PUNTO Y COMA POR 3 PUNTOS SUSPENSIVOS) Y CON ESE CAMBIO NO CORRERIA EL PROGRAMA.
POR ESO TE DEJO UN ENLACE DIRECTO, SUBI EL CODIGO EN LENGUAJE C++ Y C EN UN BLOC DE NOTAS TOTALMENTE FUNCIONAL...Solo cortalo y pegalo en tu proyecto de c o c++ (los 2 codigos estas en el mismo archivo asi que ten cuidado de cortar la parte que les corresponde a cada uno) y listo el programa corre bien (si usas otro compilador diferente a visual studio y te marca error, prueba quitando la libreria #include "stdafx.h")
AQUI ESTA EL ENLACE DIRECTO:
http://www.mediafire.com/?xmtzezymnot
(en cuanto se carga la pagina da clic en: Click here to start download y se descargara a tu computadora el archivo.)
CODIGO EN LENGUAJE C++:
// matrices4x4.cpp: archivo de proyecto principal.
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include <iostream>
using namespace std;
#define o cout
#define i cin
void main()
{
int matriz1[100][100],matriz2[100][100];
//matriz1 guarda sus valores, matriz 2 guarda sus valores.
int multiplicacion[100],matrices,matrizfinal=0;
/*el arreglo multiplicacion guarda la matriz resultado,
matrices y matrizfinal se usan como auxiliares en la operaciones sobre las matrices.*/
int x,y,z; //x, y, z son contadores para recorrer las filas y columnas de ambas matrices.
int n,n2,num,num2;//n y n2 son para guardar filas y columnas de matriz 1, num y num2 filas y columnas de matriz 2.
o<<"MULTIPLICADOR DE MATRICES DE HASTA 4x4\n\t";
o<<"Recuerde que el numero de columnas de la primera matriz\n\tsea igual al numero de filas de la segunda\n\n";
o<<"INTRODUZCA EL NUMERO DE COLUMNAS DE LA MATRIZ 1:";
i>>n2;
o<<"INTRODUZCA EL NUMERO DE FILAS DE LA MATRIZ 1:";
i>>n;
o<<"INTRODUZCA EL NUMERO DE COLUMNAS DE LA MATRIZ 2:";
i>>num2;
o<<"INTRODUZCA EL NUMERO DE FILAS DE LA MATRIZ 2:";
i>>num;
if(n2==num)
{
if(n2>4 || n>4 || num2>4 || num2>4)
{
o<<"La matriz no puede excederse de 4x4";
getch();
}//fin de if que valida que la matriz 1 no se exceda de 4 columnas.
else
{
if(n>0 && n2>0)
{
o<<"MATRIZ 1:";
for(x=0;x<n;x++) //estos 2 for sirven para asignar los valores a la matriz 1.
for(y=0;y<n2;y++){
o<<"\nDAME EL VALOR DE LA COLUMNA " <<y+1<<"DE LA FILA "<<x+1<<": ";
i>>matriz1[x][y];}
}/*fin if que valida que se haya especificado un numero de columnas y filas para la matriz 1,
para poder agregarle valores a dicha matriz 1 */
if(num>0 && num2>0)
{
o<<"\n\nMATRIZ 2:";
for(x=0;x<num;x++)//estos 2 for sirven para asignar los valores a la matriz 2.
for(y=0;y<num2;y++){
o<<"\nDAME EL VALOR DE LA COLUMNA "<<y+1<<"DE LA FILA "<<x+1<<": ";
i>>matriz2[x][y];}
}/*fin if que valida que se haya especificado un numero de columnas y filas para la matriz 2,
para poder agregarle valores a dicha matriz 2 */
for(x=0;x<n;x++)/*en estos 3 for sirven para poder hacer el proceso de multiplicación de las 2 matrices.*/
{
for(y=0;y<num2;y++)
{
for(z=0;z<num;z++)
{
matrices=matriz1[x][z]*matriz2[z][y];
matrizfinal=matrizfinal+matrices;
}
}
multiplicacion[x]=matrizfinal;
matrizfinal=0;
}
for(x=0;x<n;x++)//estos 2 for sirven para mandar imprimir el resultado.
{
o<<"\n[ "<<multiplicacion[x]<<" ]";
}
getch();
}// else que se ejecuta en caso de que la matriz 1 no exceda de 4 columnas.
}//fin if que valida si es una matriz apta para multiplicar.
else
{
o<<"ERROR, Recuerde que el numero de columnas de la primera matriz \n\t es igual al numero de filas de la segunda";
getch();
}//fin de else que permite realizar el proceso de multiplicacion en caso de que matriz sea apta para este.
}//fin llamada void.
______________________________
Si te puedo ayudar en algo más o tienes alguna duda, solo escribeme a [email protected] y con gusto te respondere.
BUEN DIA!!!
for(i = 0; i < 4; i++)
{
for(j = 0; j < 4; j++)
{
for(k = 0; k < 4; k++)
{
C[i][j] += A[i][k] * B[j][k];
}
}
}
C es la matriz resultado, que primero debes inicializar en 0.
En cada "for" pones el tamaño de las matrices en la condición de terminación (argumento 2), la cual puedes obtener como dato antes, de preferencia.
Los 3 contadores son enteros.
Bueno pero dime que sentencias, que bucles utilizas
Te doy un codigo.. pero el codigo es un seudocodigo.
public int[] multiplicar(int[] matrizUno, int[] matrizDos) {
int[] matrizResultado = new int(matrizUno.length);
for(int i = 0; i < matrizUno.length; i++) {
matrizResultado[i] = matrizUno[i] * matrizDos[i];
}
return matrizResultado;
}