Cátedra I Informática Autor I Carlos Bartó Examen de regularidad Nombre: Fecha: 25/02/07 NOTA: Carrera: Matrícula: En una planilla llamada notas.txt se tienen cargadas las notas de 50 alumnos de un curso ordenadas de la siguiente manera: columna 1: numero de matricula del alumno, columna 2: nota del primer parcial, columna 3: nota del segundo parcial y columna 4: nota del tercer parcial. Realice un programa en C++ que: a) Guarde en un arreglo denominado datos los valores que se encuentran en la planilla notas.txt (10 puntos). b) Permita el ingreso de la nota de los trabajos finales para cada alumno y guarde esos valores en una columna en el arreglo datos (10 puntos). c) A través de una función, calcule el promedio de las cuatro notas de cada alumno y guardelas en un arreglo denominado promedio en donde en la primer columna se encuentre la matricula del alumno y en la segunda el promedio de las cuatro notas. Muestre desde el main ( ) una tabla que contenga los valores del arreglo promedio (20 puntos). d) Con una función llamada estadística calcule y muestre la cantidad de alumnos que tienen una nota menor que 4, la cantidad de alumnos con nota mayor o igual que 4 y menor que 6 y la cantidad de alumnos con nota mayores o igual que 6 (20 puntos). e) Calcule mediante una función el valor máximo de las notas promedio de todos los alumnos y muéstrela desde el main (10 puntos) f) Calcule el valor relativo de la nota de cada alumno (valrelativo=nota promedio del alumno/nota máxima) y guárdelas en un archivo denominado valorrel.txt en donde la primer columna tenga la matricula del alumno y en la segunda columna el valor relativo (30 puntos) Cátedra I Informática Autor I Carlos Bartó Solución #include<iostream> #include<fstream> #include<math.h> #include <cstdlib> #include <iomanip> using namespace std; const int elem=50; int main () { float datos [elem][5]; float promedio[elem][2]; void calcprom(float [elem][5], float [elem][2]); void estadistica(float [elem][2]); float maximo(float [elem][2]); float valmax; ifstream lectura; int i, j; char nombre[30]="notas.txt"; lectura.open(nombre); if (lectura.fail()) { cout<<"El archivo no se encontro."<<endl; system("pause"); exit(1); }; for (i=0; i<elem; i++) { for (j=0; j<4; j++) { lectura >>datos[i][j]; } } lectura.close(); for (i=0; i<elem; i++) { cout<<"Ingrese las notas de los trabajos finales para el alumno "<<datos[i][0]<<endl; cin >>datos[i][4]; } calcprom(datos, promedio); Cátedra I Informática Autor I Carlos Bartó cout<<"---------------------------------"<<endl; cout<<setw(6)<<"Matricula"<<setw(15)<<"Promedio"<<endl; cout<<"---------------------------------"<<endl; for (i=0;i<elem;i++) { cout<<setw(5)<<promedio[i][0]<<setw(18)<<promedio[i][1]<<endl; } cout<<"---------------------------------"<<endl; system("pause"); estadistica(promedio); valmax=maximo(promedio); cout<<"La nota promedio maxima fue de "<<valmax; system("pause"); ofstream guardar; char nombre2[30]="valrelativo.txt"; guardar.open(nombre2); if (guardar.fail()) { cout<<"El archivo no se encontro."<<endl; system("pause"); exit(1); }; guardar<<"Valores relativos: "<<endl; for (i=0; i<elem; i++) { guardar<<promedio[i][0]<<" "; guardar<<promedio[i][1]/valmax<<endl; } guardar<<endl; guardar.close(); return 0; } // Funciones void calcprom (float datos[elem][5], float promedio[elem][2]) { int i; for (i=0; i<elem; i++) { promedio[i][0]=datos[i][0]; promedio[i][1]=(datos[i][1]+datos[i][2]+datos[i][3]+datos[i][4])/4; } return; } void estadistica (float promedio[elem][2]) { int i; int a=0; Cátedra I Informática Autor I Carlos Bartó int b=0; int c=0; for (i=0; i<elem; i++) { if(promedio[i][1]<4) a=a+1; else if (promedio[i][1]>=4&& promedio[i][1]<6) b=b+1; else if (promedio[i][1]>=6) c=c+1; } cout<<a<< " alumnos tuvieron una nota menor que 4"<<endl; cout<<b<< " alumnos tuvieron una nota igual o mayor que cuatro y menor que 6"<<endl; cout<<c<< " alumnos tuvieron una nota mayor o igual que 6"<<endl; system("pause"); } return; float maximo (float promedio[elem][2]) { int i; float max=promedio[0][1]; for (i=1; i<elem; i++) { if (promedio[i][1]>max) { max=promedio[i][1]; } } return max; }