You are on page 1of 5

UNMSM Facultad de Ingeniería Industrial

E.A.P. Ingeniería Industrial

Duración: 1Hr. 55 min.


EXAMEN FINAL - FUNDAMENTOS DE PROGRAMACION
Nota: Para la solución del problema, use solamente las hojas proporcionadas por el docente que cuida la
prueba y además resolver con lapicero en forma clara.

1. Se tiene las siguientes funciones tal como se indica:

void LeerNumero.- Permite leer un numero entero mayor que 10. ( 1 Punto)
void EvaluaPotenciacion. Esta función recibe como dato el número entero de la
función anterior, y con esta se encarga de calcular la potenciación de todos los dígitos
que sean diferentes de 0. Para evaluar la potenciación de cada digito, el exponente
debe ser la posición que ocupa el digito en el número dado. Además debe calcular la
suma de la potenciación de cada digito y retornar. (4 puntos)
void Print.- Esta función se encarga de mostrar la sumatoria calculada por la función
anterior. (1 punto)

Como dato adicional se brinda la función principal y una posible corrida del programa.

#include<iostream>
using namespace std;

// Funcion principal
int main()
{ int num,sp;
LeerNumero(num);
EvaluaPotenciacion(num,sp);
Print(sp);
}

Solución: Ing. Felix Huari

#include<iostream>
using namespace std;
void LeerNumero(int &n)
{ do
{ cout<<" Ingrese un numero\nEntero mayor que diez:";
cin>>n;
}while (n<=10);
cout<<endl;
}

int Potencia(int a, int m)


{ int i,pot=1;
for(i=1;i<=m;i++)
pot=pot*a;
return pot;
}

Los Profesores / Sem. 2014-II 02/12/2014


UNMSM Facultad de Ingeniería Industrial
E.A.P. Ingeniería Industrial

Duración: 1Hr. 55 min.


void EvaluaPotenciacion(int m,int &sdp)
{ int d,k=0,p;sdp=0;
cout<<"Digito\tPotencia"<<endl<<endl;
while(m>0)
{ d=m%10;
k=k+1;
if(d!=0)
{ p=Potencia(d,k);
sdp=sdp+p;
cout<<d<<"\t"<<p<<endl;
}
m=m/10;
}
}

void Print(int x)
{ cout<<"\nLa suma de la potencias es = "<<x<<endl;
}

2. La información sobre las notas obtenidas por un alumno en el curso de Fundamentos


está contenida en una cadena con los siguientes datos:

CodigoUNMSM, Nombre, Apellido, NotaPractica1, NotaPractica2, NotaPractica3,


NotaPractica4, NotaLab1, NotaLab2, NotaLab3, NotaLab4, NotaExamenParcial y
NotaExamenFinal

Los valores de estos datos están separados por un guión, tal como se muestra en el
siguiente ejemplo: “20140134-Juan Torres-12-16-F-5-16-11-12-F-14-8”

La letra F significa que el alumno faltó a esa evaluación, lo que equivale a la nota cero.

Se pide desarrollar en C++ las siguientes funciones:

a) Extrae que reciba como parámetro una cadena conteniendo los datos del alumno y
que devuelva el código del alumno, el nombre del alumno, el apellido del alumno,
las cuatro notas de prácticas calificadas, las cuatro notas de laboratorio, la nota del
examen parcial y la nota del examen final. (6 puntos)

b) CalculaMuestraPromedio que recibe como parámetros un arreglo con las cuatro


notas de prácticas calificadas, un arreglo con las cuatro notas de laboratorio, la
nota del examen parcial y la nota del examen final y que calcula el promedio del
alumno de acuerdo a la siguiente fórmula:
PromFinal = ( 2*PromPC + 2*PromLab + 3*ExParcial + 3*ExFinal ) / 10.
Luego muestra dicho promedio y también si el alumno está Aprobado o
Desaprobado. (2 puntos)

Los Profesores / Sem. 2014-II 02/12/2014


UNMSM Facultad de Ingeniería Industrial
E.A.P. Ingeniería Industrial

Duración: 1Hr. 55 min.

Solución: Ing. Raquel Malca

// 2.0 puntos
void promedio(int pc[], int lab[], int ep, int ef)
{
float pc1,pl,prom;
pc1 = (pc[1]+pc[2]+pc[3]+pc[4])/4.0;
pl = (lab[1]+lab[2]+lab[3]+lab[4])/4.0;
prom = (2*pc + 2*pl + 3*ep+4*ef)/10.0;
if (prom >= 10.5)
cout<<"el promedio es "<< prom<< " y está aprobado"<<endl;
else
cout<<"el promedio es "<< prom<< " y está desaprobado"<<endl;
}

// 6.0 puntos
void Extrae( char cadena[],char codigo[9], char nombre[M],char apellido[M], int &p1, int
&p2, int &p3, int &p4, int &l1, int &l2, int &l3, int &l4, int &ep, int &ef)
{
int i,j,k, auxNotas[N];
char aux[M];
i = 0;
while ( cadena[i] != '\0' )
{ // Leemos el codigo
j = 0;
while ( cadena[i] != '-')
{ codigo[j] = cadena[i];
i++;
j++;
}
codigo[j] = '\0';
// Leemos el nombre
i++;
j = 0;
while ( cadena[i] != '-' )
{ nombre[j] = cadena[i];
i++;
j++;
}
nombre[j] = '\0';

// Leemos el apellido
i++;
j=0;
while ( cadena[i] != '-' )
{ apellido[j] = cadena[i];

Los Profesores / Sem. 2014-II 02/12/2014


UNMSM Facultad de Ingeniería Industrial
E.A.P. Ingeniería Industrial

Duración: 1Hr. 55 min.


i++;
j++;
}
apellido[j] = '\0';

// Leemos las notas


i++;
j = 0;
while ( cadena[i] != '\0' )
{ k = 0;
while (cadena[i]!='-' && cadena[i] != '\0')
{ aux[k] = cadena[i];
cout<<"valor aux es "<<aux[k]<<" valor de k es "<<k<<endl;
cout<<"valor cadena es "<<cadena[i]<<" valor de i es "<<i<<endl;
if (isalpha(aux[k])) { aux[k] = '0'; }
i++;
k++;
}
aux[k] = '\0';
cout<<"valor aux total "<<atoi(aux)<<endl;
auxNotas[j] = atoi(aux);
i++;
j++;
}
p1 = auxNotas[0]; p2 = auxNotas[1];
p3 = auxNotas[2]; p4 = auxNotas[3];
l1 = auxNotas[4]; l2 = auxNotas[5];
l3 = auxNotas[6]; l4 = auxNotas[7];
ep = auxNotas[8]; ef = auxNotas[9];
}
}

3. Implementar las funciones CargarMat y SumaFilaPar, que permitan que el siguiente


programa muestre la suma y promedio de los valores ingresados en las filas pares del
arreglo bidimensional correspondiente (ver corrida del programa).

#include <iostream>
using namespace std;
//Declaracion de las funciones
void CargarMat();
void SumaFilaPar(int mat[][3]);
//Declaración de variables globales
int mat [4][3],f,c;
//Funcion principal
int main()
{ CargarMat();// 3 puntos
SumaFilaPar(mat);// 3 Puntos
}

Los Profesores / Sem. 2014-II 02/12/2014


UNMSM Facultad de Ingeniería Industrial
E.A.P. Ingeniería Industrial

Duración: 1Hr. 55 min.

Solución: Ing. Oscar Tinoco

void CargarMat()
{ cout<<"Ingrese N enteros: ";
for(f=0;f<4;f++)
{ cout<<"fila: "<<f<<endl;
for(c=0;c<3;c++){
cin>>mat[f][c];
}
}
}

void SumaFilaPar(int mat[][3])


{ int suma=0,k=0;
for(f=0;f<4;f=f+2)
{ for(c=0;c<3;c++){
suma=suma+mat[f][c];
k++;
}
}
cout<<"La sumatoria de las filas pares es: "<<suma<<endl;
cout<<"\n El Promedio de las filas pares es "<<suma*1.0/k;
}

Los Profesores / Sem. 2014-II 02/12/2014

You might also like