Está en la página 1de 8

Facultad de Ingeniería

Programa de Ingeniería de Sistemas


Programación I
CASO 7

CASO DE ESTUDIO: ESTADÍSTICAS 
PROYECTO DE INVESTIGACIÓN 
1. ENUNCIADO 
 
En  la  Universidad   Tecnológica  de  Bolívar,  el  ​
GR​ upo  de  ​
I​
nvestigación  en  ​T​
ecnologías 
A​plicadas  y ​S​
istemas de información ​ GRITAS​ , analiza, diseña, desarrolla e implementa 
un  proyecto  de  investigación  que  está  calculado  para  ser  entregado  en  ​ M  días,  en el 
proyecto  participan  ​ N  estudiantes  pertenecientes  al  semillero  de  investigación  del 
grupo.  La  labor  de  cada  estudiante  es  desarrollar  tareas  propias   de  la  investigación. 
Durante  el  desarrollo del  proyecto, al  final del  día  a  cada estudiante se le  anota  en un 
registro  el código y el número de horas de investigación realizadas (se debe validar que 
el dato solo puede estar entre 1 – 10 horas diarias).  
 
Al concluir el proyecto se tendrá la siguiente información: 
 
Ejemplo con datos de prueba.​  Para (filas)  ​
N​ = 6 estudiantes, y (columnas) ​ M​ = 8 días 
 

 
 
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
CASO 7

Elabore  un  algoritmo  que  lea  los  datos  de  los  estudiantes  teniendo  en  cuenta  lo 
siguiente: 
● Los  códigos  de  los  estudiantes  se  almacenarán  en  un  arreglo  y  las  horas  de 
investigación por día se almacenarán en una matriz. 
●  ​ Por cada estudiante  se  leerán su código y las  horas  trabajadas  en cada uno de 
los ​M​
 días del proyecto. 
 
Se debe calcular e imprimir lo siguiente: 
● El  total  de  horas  de  investigación  por  cada  estudiante  en  orden  ascendente 
(menor a mayor). 
● La  lista  completa  de  cada  uno  de  los  estudiantes  con  las  horas  de  
investigación realizadas por día. 
● El  total  de  horas  de  investigación  realizadas   por  el  semillero  para  la 
culminación del proyecto. 
 
Contexto del caso: 
Grupo  de  investigación:  ​ Se  define  grupo  de  investigación  científica  o  tecnológica 
como  el  conjunto  de  personas  que  se  reúnen  para  realizar  investigación  en  una 
temática  dada,   formulan  uno  o  varios  problemas  de  su  interés,  trazan  un  plan 
estratégico  de  largo o mediano plazo  para  trabajar  en  él y producir  unos resultados de 
conocimiento  sobre  el  tema  cuestión.  Un  grupo  existe  siempre  y  cuando  demuestre 
producción  de  resultados tangibles  y  verificables, fruto de proyectos y otras actividades 
de  investigación  convenientemente  expresadas  en  un  plan  de  acción  (proyectos) 
debidamente formalizado. 
Semilleros  de  Investigación:​ Se  entiende  por  semillero  de  investigación:  un conjunto 
de  estudiantes  que,  orientados  por  un  investigador,  se  inician  en  la  actividad 
investigativa  de orden formativa superando  las fronteras del proceso académico formal 
con  el  fin  de  desarrollar  competencias  y  habilidades  investigativas  que  afiancen  la 
cultura  de  la  investigación  en  la  Universidad,  mediante  actividades  académicas 
orientadas a tal fin. 
Los  semilleros  de  investigación  permiten  la  participación  de  los  alumnos  en  el 
desarrollo  de  proyectos  de  investigación  de   diferente  índole,  privilegiando  la 
participación  en  el  diagnóstico  de  la  realidad  social,  fortaleciendo  las  capacidades 
investigativas  para  la  toma  de  decisiones  y  promoviendo  a jóvenes  con capacidad de 
investigación. 
 
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
CASO 7

2. ESTRUCTURA DE DATOS 

 
//se definen las variables que se necesitan 
int​N, M, i, j, suma_horas, total_proyecto = 0;
int​menor, aux;
string​aux_cod;
 
//se solicitan al usuario el número de estudiantes participantes 
//y la cantidad de días de duración del proyecto 
  do
{
cout<<​
​ "\n\tDigite cantidad de estudiantes: ";
cin>>​
​ N;
}
while​(N < 1);

do
{
​out<<​
c "\n\tDigite cantidad de dias: ";
cin>>​
​ M;
}
while​(M < 1);
 
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
CASO 7

//se declaran la matriz Horas_Investigacion N * M 
//y los arreglos para Código y Total horas 
string​Codigo_Estudiante[N];
int​Horas_Investigacion[N][M], Total_Horas[N];
 
3. REQUERIMIENTOS FUNCIONALES 
 
RF1​
.  El  total  de  horas  de  investigación  por  cada  estudiante  en  orden  ascendente 
(menor a mayor). 
// Se utiliza utiliza ciclos anidados para calcular el arreglo Total_Horas 
 
RF2​ .  La  lista  completa  de  cada  uno  de los  estudiantes  con las  horas  de  investigación 
realizadas por día. 
// Se imprime la matriz todos los estudiantes con horas por día 
 
RF3​ .  El  total  de  horas  de investigación  realizadas  por  el semillero para la  culminación 
del  proyecto.  (Solucionado  en  el  RF1.)  T ​otal = Total + Horas_Investigacion[j][i] 
dentro del ciclo anidado. 

4. REQUERIMIENTOS INSTRUCCIONALES 
 
A. ANÁLISIS Y DISEÑO 
En  esta  etapa  se  debe  comprender  de   forma  detallada  cual  es  la  problemática  a 
resolver,  comprobando  el  dominio  o contexto  en el  cual se encuentra dicho  problema. 
Al  realizar  la  síntesis  de  las  estructuras  de  datos  y  los  requerimiento  funcionales  se 
está  obteniendo  la  información  necesaria  y  suficiente  para  afrontar  su  respectiva 
solución. 
Para solicitar los datos de entrada 
//se utiliza ciclos anidados para solicitar los valores de entrada 
for​(i = 0; i < N; i++)
{
cout<<​
​ "\n\n\tDigite el codigo del estudiante ";
cout<<​
​ "\n\t"​
<<​
i+1​
<<​
". ";
cin>>​
​ Codigo_Estudiante[i];
cout<<​
​ "\tDigite las horas trabajadas (1 - 10)";
suma_horas = 0;

​or​(j = 0; j < M; j++)


f
{
do​
​ {
cout<<​
"\n\tDia ["​
<<​
j+1​
<<​
"] -> ";
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
CASO 7

cin>>​
Horas_Investigacion[i][j];
}
while ​
(Horas_Investigacion[i][j]<1 || Horas_Investigacion[i][j]>10);
//se valida que el dato solo puede estar entre 1 – 10 horas diarias
suma_horas += Horas_Investigacion[i][j];
}
Total_Horas[i] = suma_horas;
total_proyecto += suma_horas;
}
 
TÉCNICAS DE ORDENAMIENTO 
//Se ordenan los arreglos Total_Horas y Codigo_Estudiante 
//Segundo método: SELECCIÓN 
for​(i = 0; i < N-1; i++)
{
menor = i;
for​
(j = i+1; j < N; j++)
if​
(Total_Horas[menor] > Total_Horas[j]);
menor = j;

aux = Total_Horas[menor];
Total_Horas[menor] = Total_Horas[i];
Total_Horas[i] = aux ;

aux_cod = Codigo_Estudiante[menor];
Codigo_Estudiante[menor] = Codigo_Estudiante[i];
Codigo_Estudiante[i] = aux_cod ;
}
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
CASO 7

B. IMPLEMENTACIÓN 
#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
int N, M, i, j, suma_horas, total_proyecto = 0;
int menor, aux;
string aux_cod;
cout<<"\n\tPROYECTO DE INVESTIGACION - BITACORA DE TIEMPO";
cout<<"\n\tHORAS DE TRABAJO POR DIA - SEMILLERO\n\n";
do
{
cout<<"\n\tDigite cantidad de estudiantes: ";
cin>>N;
}
while (N < 1);

do
{
cout<<"\n\tDigite cantidad de dias: ";
cin>>M;
}
while (M < 1);

string Codigo_Estudiante[N];
int Horas_Investigacion[N][M], Total_Horas[N];

for (i = 0; i < N; i++)


{
cout<<"\n\n\tDigite el codigo del estudiante ";
cout<<"\n\t"<<i+1<<". ";
cin>>Codigo_Estudiante[i];
cout<<"\tDigite las horas trabajadas (1 - 10)";
suma_horas = 0;
for (j = 0; j < M; j++)
{
do
{
cout<<"\n\tDia ["<<j+1<<"] -> ";
cin>>Horas_Investigacion[i][j];
}
while (Horas_Investigacion[i][j] < 1 || Horas_Investigacion[i][j] > 10);
suma_horas += Horas_Investigacion[i][j];
}
Total_Horas[i] = suma_horas;
total_proyecto += suma_horas;
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
CASO 7

system("cls");
cout<<"\n\tPROYECTO DE INVESTIGACION - BITACORA DE TIEMPO";
cout<<"\n\tHORAS DE TRABAJO POR DIA - SEMILLERO\n\n";
for (i = 0; i < N; i++)
{
cout<<"\n______________________________________________________________\n";
cout<<"\n\tEstudiante "<<Codigo_Estudiante[i]<<" Horas de investigacion:";
cout<<"\n______________________________________________________________\n";
for (j = 0; j < M; j++)
cout<<"\n\tDia ["<<j+1<<"] -> "<<Horas_Investigacion[i][j];
cout<<"\n______________________________________________________________\n";
cout<<"\tTotal horas: "<<Total_Horas[i]<<"\n";

}
cout<<"\n\n\tEnter para continuar...";
system("pause");

//Ordenamiento por Selección


for (i = 0; i < N-1; i++)
{
menor = i;
for(j = i+1; j < N; j++)
if(Total_Horas[menor] > Total_Horas[j])
menor = j;

aux = Total_Horas[menor];
Total_Horas[menor] = Total_Horas[i];
Total_Horas[i] = aux ;

aux_cod = Codigo_Estudiante[menor];
Codigo_Estudiante[menor] = Codigo_Estudiante[i];
Codigo_Estudiante[i] = aux_cod ;
}

system("cls");
cout<<"\n\tPROYECTO DE INVESTIGACION - BITACORA DE TIEMPO";
cout<<"\n\tHORAS TOTALES DE TRABAJO - SEMILLERO\n\n";
cout<<"\n______________________________________________________________\n";
cout<<"CODIGO ESTUDIANTE\tHORAS TOTALES DE INVESTIGACION";
cout<<"\n______________________________________________________________\n";
for (i = 0; i < N; i++)
cout<<"\n\t"<<Codigo_Estudiante[i]<<"\t\t\t"<<Total_Horas[i];
cout<<"\n______________________________________________________________\n";
cout<<"\tTOTAL HORAS PROYECTO "<<total_proyecto<<"\n\n";
return 0;
}
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
CASO 7

C. PRUEBAS 
Después  de  implementado  el  programa  y  con  los  datos  de  prueba,  los  resultados 
deberán verse en pantalla de la siguiente manera: 

   

También podría gustarte