USM PROG I
Blog informativo Cátedra de Programación I Profesor: Ing Carlos Ferrer - USM Caracas
miércoles, 17 de junio de 2026
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
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");
}
viernes, 29 de mayo de 2026
03f.- Programación I - Actividad Financiera para el Jueves 04 de Jun de 2026 (semestre 2026-II)
El siguiente enlace los conducirá a un vídeo donde se ejecuta el estudio de los Prestamos o Créditos de cuota fija con interés fijo y plazo variable.
Video Explicativo - Actividad Financiera
Muchas veces se les permite a los solicitantes hacer aportes extraordinarios para reducir los periodos de pagos, en nuestro caso permitiremos un (1) solo pago extraordinario (amortización).
Se elaboró una hoja en Excel con detalles de un préstamo con la posibilidad de ejecutar aportes extraordinarios. La misma indica como se van calculando los intereses y se van ejecutando los pagos.
El archivo en Excel puede descargarse desde el siguiente enlace:
El profesor elaboró un programa que ejecuta el cálculo similar a como lo hace Excel. El siguiente enlace contiene el ejecutable del programa elaborado por el profesor:
El programa deberá manejar las siguientes condiciones:
- Intereses entre 2% y 10%.
- Periodos de pago de 12 a 48 meses.
- El programa deberá manejar al menos una estructura
- El programa deberá maximizar el uso de arreglos.
Se recomienda elaborar esta actividad aunque se aclara que ESTA ACTIVIDAD SERÁ EVALUADA
Éxito!!!!
ARCHIVO DE EXCEL
PROGRAMA
REPORTE (ARCHIVO DE TEXTO)
03e.- Programación I - Manejo de Archivos de texto (ESCRITURA) - clase 29 de May 2026
En la misma clase se planteo un programa que creara un archivo de texto en el escritorio de nombre Yoyo y le vaciaba cierta cantidad de datos. Inicialmente determinamos cual es la ruta del escritorio de nuestra maquina, para esto, vemos las propiedades de un archivo en el escritorio escritorio y copiamos la ruta del escritorio:
03d.- Programación I - Manejo de Archivos de texto (LECTURA) - clase 29 de May 2026
Durante la clase se planteo un programa que lee los datos contenidos en un archivo de texto ubicado en el escritorio de nombre Yoyo.txt. Inicialmente determinamos cual es la ruta del escritorio de nuestra maquina, para esto, vemos las propiedades de el archivo en el escritorio y copiamos la ruta del escritorio:
miércoles, 27 de mayo de 2026
03d.- Programación I - Funciones
Una función en C++ es un
fragmento de código que se puede llamar desde cualquier punto de un programa
principal (main). En C++ podemos diferenciar entre dos tipos de funciones:
- Aquellas que no tienen retorno void (Vacias).
- Aquellas que retornan un tipo de dato (como int, double o cualquier otro),
IMPORTANTE: NO SOBREUTILICE LAS FUNCIONES, EL USO DE LAS MISMAS SE JUSTIFICA SI DENTRO DE LOS PROGRAMAS HAY PROCEDIMIENTOS QUE SE REPITEN MULTIPLES VECES.
ORGANIZAR UN PROGRAMA CON EL USO DE LAS FUNCIONES PUEDE SER UNA COSTUMBRE INAPROPIADA.
Ejemplo de función tipo void:
Como vemos, las funciones
las hemos situado antes de la función main. Alternativamente, podemos situar el
cuerpo de las funciones después de la función main. Veamos nuevamente los dos programas haciendo ese ajuste de
posición (Colocando la función al final).
Ejemplo de función tipo
void - colocando la función al final (Noten la doble declaración):
Veamos el mismo programa
usando función de retorno - colocando la función al final (Noten nuevamente la doble declaración):
IMPORTANTE: Para retornar mas de un datos desde una función se puede utilizar datos de memoria con la técnica de los apuntadores.



















