jueves, 11 de junio de 2026

03g.- Programación I - Parcial Nro. 3 (semestre 2026-II) - Solución del Profesor

  

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


Archivo B



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");

}


Resultado



Respuesta Actividad Nro. 2

El programa presenta en pantalla todos los números primos contenidos en el rango de 100 a 999 cuyo último digito es el número siete (7). Nota: Este programa fue elaborado durante las clases asociadas al parcial nro. 1, con la diferencia de que esta vez se presentó con dos funciones.