Вы находитесь на странице: 1из 6

UIS * EISI Proyecto I - Calificacin de un test

22948 Fundamentos de Programacin PD1


2141371 Daniel Eduardo Caldern Martnez Fecha: 09/12/14

Elabore un programa en C++ para calificar un examen que tiene 10 preguntas de seleccin
Falso/Verdadero, para un grupo de 10 estudiantes. Se tiene un vector de enteros cortos,
Claves[10] (almacena las respuestas correctas; 1 significa Verdadero y 0 significa
Falso), y una matriz R[10][10] de enteros cortos; cada fila de la matriz R contiene las
respuestas de un estudiante, y cada columna contiene las respuestas del grupo a una
pregunta. Toda pregunta debe estar respondida en la siguiente forma: marcada con 1 si cree
que la respuesta a la pregunta es verdadero; marcada con cero si cree que la respuesta a
la pregunta es falso, marcada con -1 si no sabe.

Su programa debe:
A. Calificar a cada estudiante calculando los siguientes valores: Nmero de
repuestas Buenas, Malas, NoRespondidas, y la nota; la nota se calcula con la
frmula: NOTA = (BUENAS - 0.5 * MALAS)/2
(8 -2)
B. Calcular la media aritmtica y la desviacin estndar para la lista de notas de
los estudiantes.
C. Calificar al grupo en cada pregunta, calculando los siguientes valores: nmero
de respuestas Buenas, Malas, NoRespondidas y la nota del grupo (usando la
frmula 8-2).

D. Informar al usuario sobre el avance de la ejecucin del programa y presentar en


pantalla adecuadamente los datos y resultados haciendo pausas controlables por
el usuario.
E. Usar la interfaz de usuario que se ilustra en la figura 65, la cual contiene:
a. Encabezado que identifica el problema que se resuelve (agregue el nombre
del autor);
b. El vector de claves y la matriz de respuestas de los estudiantes. Para
formatear la matriz utilice el manipulador setw(n) para controlar el
espaciamiento de los datos (ver seccin 7.7.3.3 y el ejemplo 3.5.2).
c. Los resultados para cada estudiante (Buenas, Malas, NoRespondidas, y la
Nota); las notas, se imprimen con un decimal .
d. Los resultados por pregunta para el grupo (Buenas, Malas, NoRespondidas,
y la Nota).
e. La media y la desviacin estndar de las notas individuales.
SOLUCION

#include <iostream>
#include <iomanip>
using namespace std;
using namespace System;
#include <fstream>
#include <conio.h>
#include <stdlib.h>

int main()

{ cout << setprecision(2);


Console::BackgroundColor::set(ConsoleColor::White);
Console::Clear();
Console::Title::set("UIS * EISI * Programacin Visual C++ * Program:
Daniel E. Calderon Martinez");

const int E = 10, P= 10;


short int BE[E], ME[E], NRE[E], BG[P], MG[P], NRG[P];
int i, j, claves[P], R[E][P];
float NotaE[E], NotaG[P], sigma, xmedia, des, de;

Console::ForegroundColor::set(ConsoleColor::DarkBlue);
cout << "\n\t\t\tCALIFICACION DE UN TEST\n\n";
Console::ForegroundColor::set(ConsoleColor::Black);
cout << "\n\n\t Datos de estudiantes \n";
cout << "\n\n\t Va a abrir para la lectura el archivo " << "\n\t C:\\proyecto\\matriz.txt";

// Apertura y verificacin de datos del archivo


ifstream entrada ("C:\\proyecto\\matriz.txt");
if (entrada.is_open () == false)
{ Console::ForegroundColor::set(ConsoleColor::DarkMagenta);
cout << "\n\t Imposible abrir el archivo matriz.txt";
cout << "\n\n \t\t\t Para terminar pulse Enter \n"; cin.get(); return 1;
}

_sleep(100);
cout << "\n\n\n\t .";
_sleep(500);
cout << " .";
_sleep(500);
cout << " .";
_sleep(500);
cout << "\n\n\n\t Apertura del archivo exitosa";

// Asignacin de datos a vector y matriz


for ( j = 0; j < P; j++)
entrada >> claves [j];
for (i = 0; i < E; i ++)
for ( j = 0; j < P; j++)
entrada >> R[i][j];
// calcula Buenas, Malas, NoRespondidas, y la nota individual
for (i = 0; i < E ; i ++)
{ BE[i] = 0;
ME[i] = 0;
NRE[i] = 0;

for (j = 0; j < P; j++)

if (R[i] [j] == claves[j])


BE[i]++;
else

if (R[i] [j] == -1)


NRE[i]++;

else ME[i]++;
}

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


NotaE[i] = 0.5*(BE[i] - 0.5* ME[i]);

// calcula Buenas, Malas, NoRespondidas, y la nota por pregunta


for (j=0; j<P; j++)
{ BG[j] = 0;
MG[j] = 0;
NRG[j] = 0;

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

if (R[i] [j] == claves[j])


BG[j]++;
else

if (R[i] [j] == -1)


NRG[j]++;
else MG[j]++;

}
for (j = 0; j < P ; j ++)
NotaG[j] = 0.5*(BG[j] - 0.5* MG[j]);

//Media y desviacin estndar de notas individuales


sigma = 0;
for (i=0; i<P; i++)
sigma = sigma + NotaE[i];
xmedia = sigma/10;

des = 0;
for (i=0; i<=(E-1); i++)
des= des + pow ( (NotaE[i] - xmedia), 2) ;

de = sqrt(des / E );

flushall(); getchar();
Console::Clear();

//Impresin de Resultados
cout << "\t\t\t Test de Fisica (F/V) \n" << endl;
cout << "\t\t\t\t\t\t\t Resultados por alumno\n" << endl;
cout << " Clave ";
for ( j = 0; j < P; j++)
cout << setw(4) << claves [j];
cout << " BE ME NRE NE\n" << endl;
cout << "\t ";

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


{
for (j=0; j<P; j++)
cout <<setw(4) <<R[i][j];
cout <<setw(7) << BE[i];
cout <<setw(5) << ME[i];
cout <<setw(5) << NRE[i];
cout <<setw(7) << NotaE[i];
flushall(); getchar();
cout <<"\t ";

cout << "\n\nResultados para el grupo por pregunta\n\n\n";


cout << " BG\t ";
for (j=0; j<P; j++)
cout << setw(5) << BG[j];
flushall(); getchar();
cout << " MG\t ";
for (j=0; j<P; j++)
cout << setw(5) << MG[j];
flushall(); getchar();
cout << " NRG\t ";
for (j=0; j<P; j++)
cout << setw(5) << NRG[j];
flushall(); getchar();
cout << " NotaG ";
for (j=0; j<P; j++)
cout << setw(5) << NotaG[j];
flushall(); getchar();
cout << setprecision(6);
cout << "\n\t\tLa media es: " << xmedia << "\tLa desviacion es: " << de;

flushall(); getchar();
Console::Clear();

//Exportacin de resultados a archivo


ofstream salida("C:\\proyecto\\resultados.txt");

salida << "\t\t\t Test de Fisica (F/V) \n" << endl;


salida << "\t\t\t\t\t\t\t Resultados por alumno\n" << endl;
salida << " Clave ";
for ( j = 0; j < P; j++)
salida << setw(4) << claves [j];
salida << " BE ME NRE NE\n" << endl;
salida << "\t ";

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


{ for (j=0; j<P; j++)

salida <<setw(4) <<R[i][j];


salida <<setw(7) << BE[i];
salida <<setw(5) << ME[i];
salida <<setw(5) << NRE[i];
salida <<setw(7) << NotaE[i];
salida <<"\n\t ";

salida << "\n\nResultados para el grupo por pregunta\n\n\n";


salida << " BG\t ";
for (j=0; j<P; j++)
salida << setw(5) << BG[j];
salida << "\n MG\t ";
for (j=0; j<P; j++)
salida << setw(5) << MG[j];
salida << "\n NRG\t ";
for (j=0; j<P; j++)
salida << setw(5) << NRG[j];
salida << "\n NotaG ";
for (j=0; j<P; j++)
salida << setw(5) << NotaG[j];
salida << setprecision(6);
salida << "\n\n\t\tLa media es: " << xmedia << "\tLa desviacion es: " << de;

cout << "\n\n\n\t Se han guardado los datos en: " << endl;
cout << "\t C:\\proyecto\\resultados.txt" << endl;

flushall(); getchar();
}

RESULTADOS

Вам также может понравиться