1.- Se desea elaborar un programa que permita multiplicar dos matrices de 3 x 3, su programa deberá leer la matriz A desde un archivo de texto identificado como archivo_a.txt y el programa guardará los datos en un arreglo de dos dimensiones de nombre MA[4][4] (no trabaje con las posiciones cero: MA[0][x] o MA[x][0]).
Para la matriz B los datos se tomarán desde un archivo de texto identificado como archivo_b.txt y el programa guardará los datos en un arreglo de dos dimensiones de nombre MB[4][4] (no trabaje con las posiciones cero: MB[0][x] o MB[x][0]).
Su programa deberá multiplicar ambas matrices y guardar el resultado en un arreglo de dos dimensiones de nombre MC[4][4] para esto se recomienda utilizar un ciclo. Al finalizar los datos deben presentarse en pantalla.
2.- Indique en sus propias palabras que hace el programa siguiente:
Solución
Respuesta Actividad Nro. 1
Archivo A
Programa
// Parcial Nro. 3 - Semestre 2025-I
#include <iostream>
#include<fstream>
using namespace std;
int main()
{
// Declaro las matrices
int MA[4][4]={0};
int MB[4][4]={0};
int MC[4][4]={0};
//contadores
int i, j;
//variables tipo string para lectura de líneas
string linea;
// variables auxiliares
int aux,aux1;
int cantidad;
string dato;
int fila,col;
cout << "Catedra de Programacion I - Parcial Nro. 3 - Semestre 2025 - I" << endl<<endl;
/*Voy a ponerle a la función "parcial3". Esta función enlaza el programa con la librería fstream
ifstream significa lectura desde un archivo - input usando fstream*/
ifstream parcial3;
/*El open abre el archivo. Se debe colocar los dos barras invertidas backslah.
el ios::in permite lectura desde el archivo*/
parcial3.open("d:\\Carlos Ferrer\\borrar\\archivo_a.txt",ios::in);
/*Voy a verificar si la apertura del archivo falló, si asi fue le digo que se salga
del programa, esto podría pasar debido a que el archivo no existe o fue mal escrito.
La función fail se activa si la apertura del archivo falla.*/
if(parcial3.fail())
{
cout <<"El archivo no pudo abrirse"<<endl;
exit(0);
}
/* Procedemos a leer del archivo y presentamos los datos en la consola,
esto lo hacemos hasta que lleguemos al fin del archivo - eof = end of file*/
fila=0;
while(not(parcial3.eof()))
{
getline(parcial3,linea);
fila=fila+1;
col=1;
aux=0;
aux1=aux;
cantidad=0;
linea=linea+" ";
while (aux<=linea.size()-1)
{
if (linea[aux]==' ')
{
dato=linea.substr(aux1,cantidad);
cantidad=-1;
aux1=aux+1;
// Esta función convierte de string a entero (string to integer)
MA[fila][col]=stoi(dato);
col=col+1;
}
cantidad=cantidad +1;
aux=aux+1;
}
}
// Cierro el archivo_A
parcial3.close();
// Repito el proceso para el archivo B
parcial3.open("d:\\Carlos Ferrer\\borrar\\archivo_b.txt",ios::in);
/*Voy a verificar si la apertura del archivo falló, si así fue le digo que se salga
del programa, esto podría pasar debido a que el archivo no existe o fue mal escrito.
La función fail se activa si la apertura del archivo falla.*/
if(parcial3.fail())
{
cout <<"El archivo no pudo abrirse"<<endl;
exit(0);
}
/* Procedemos a leer del archivo y presentamos los datos en la consola,
esto lo hacemos hasta que lleguemos al fin del archivo - eof = end of file*/
fila=0;
while(not(parcial3.eof()))
{
getline(parcial3,linea);
fila=fila+1;
col=1;
aux=0;
aux1=aux;
cantidad=0;
linea=linea+" ";
while (aux<=linea.size()-1)
{
if (linea[aux]==' ')
{
dato=linea.substr(aux1,cantidad);
cantidad=-1;
aux1=aux+1;
MB[fila][col]=stoi(dato);
col=col+1;
}
cantidad=cantidad +1;
aux=aux+1;
}
}
// Cierro el archivo_B
parcial3.close();
//Multiplicamos las matrices
for (i = 1; i <= 3; i = i + 1)
{
for (j = 1; j <= 3; j = j + 1)
{
MC[i][j]= MA[i][1]*MB[1][j]+MA[i][2]*MB[2][j]+MA[i][3]*MB[3][j];
}
}
// Imprimimos el resultado
cout << "|" << MA[1][1] << " , " << MA[1][2] << " , " << MA[1][3] << "| " << "| " << MB[1][1] << " , " << MB[1][2] << " , " << MB[1][3] << "| "<< "|" << MC[1][1] << " , " << MC[1][2] << " , " << MC[1][3] << " |" <<endl ;
cout << "| " << MA[2][1] << " , " << MA[2][2] << " , " << MA[2][3] << "| X " << "| " << MB[2][1] << " , " << MB[2][2] << " , " << MB[2][3] << "| = "<< "| " << MC[2][1] << " , " << MC[2][2] << " , " << MC[2][3] << "|" <<endl ;
cout << "| " << MA[3][1] << " , " << MA[3][2] << " , " << MA[3][3] << "| " << "|" << MB[3][1] << " , " << MB[3][2] << " , " << MB[3][3] << "| "<< "| " << MC[3][1] << " , " << MC[3][2] << " , " << MC[3][3] << " |" <<endl ;
cout <<endl<< "Por Carlos Ferrer - USM 2025" << endl;
system("PAUSE");
}

















