//Arrays - Proyecto N°3
#include<iostream>
#include<locale.h>
#include<conio.h>
int main(){
setlocale(LC_CTYPE, "Spanish");
/*Variables enteras : (Número de alumnos[n], Itirador del ciclo FOR[i], Opción de volver a ingresar notas o continuar[option], Contador[c], Alumno con nota máxima[n1], Alumno con nota mínima[n2])*/
int n = 0, i = 0, option = 0, c = 0, n1 = 1, n2 = 1;
/*Variable char : (Regresar al menú del programa o salir de este[digit])*/
char digit = 's';
/*Variables double : (Suma de todas las notas[sumaN], Promedio del salón[promedioA], Nota máxima[max], Nota mínima[min], Rango máximo entre el rango original[rango1], Rango mínimo entre el rango original[rango1],
Puntaje extra que desea el usuario[pex], Suma las notas que son menor o igual a 6, con su puntaje extraje[puntex])*/
double sumaN = 0, promedioA = 0, max = 0, min = 0, rango1 = 0, rango2 = 0, pex = 0, puntex = 0;
//Ingresar N alumnos que sean mayor o igual que 20 o menor o igual que 30 [20<=N<=30]
do{
std::cout<<"Ingrese el número de estudiantes que va calificar sus notas"<<std::endl;
std::cout<<"Número de estudiantes(20 a 30) = "; std::cin>>n;
if(n<20){
std::cout<<std::endl<<"*El número de estudiantes es menor a 20. Vuelve a ingresar."<<std::endl;
} else if(n>30){
std::cout<<std::endl<<"*El número de estudiantes es mayor a 30. Vuelve a ingresar."<<std::endl;
}
}while(n>30 || n<20);
//Arrays de almacenar notas originales y de notas que sean menor o igual que 6.
double nots[n] = {}, nots6[n] = {};
//Ciclo FOR en que el usuario ingresará las notas de los alumnos
std::cout<<std::endl<<"Ingrese notas de sus "<<n<<" alumnos"<<std::endl;
for(int i = 0; i<=(n-1); i++){
std::cout<<"Ingrese nota del alumno N°"<<(i+1)<<" = "; std::cin>>nots[i];
}
//Ciclo DO WHILE para preguntarle al usuario si desea continuar con el programa o volver a ingresar datos.
do{
std::cout<<std::endl<<"Desea continuar con el programa[1] o volver a ingresar las notas de sus alumnos[2]"<<std::endl;
std::cout<<"Opción = "; std::cin>>option;
if(option == 2){
return main();
} else if(option>2){//ELSE IF si el usuario digita el 3 o un número mayor a este.
std::cout<<std::endl<<"ERROR: Plazo del 1 al 2 para elegir. Vuelve a elegir"<<std::endl;
}
}while(option>=2);
std::cout<<std::endl;
//Ciclo FOR para sumar todas las notas del salón.
for(int i = 0; i<=(n-1); i++){
sumaN += nots[i];
c++;
}
//La variable "promedioA" calculará el promedio de la suma de todas las notas de los N alumnos.
promedioA = sumaN/c;
//maxA y min, almacenarán las notas originales
max = nots[0];
min = nots[0];
//Ciclo FOR para calcular la nota máxima y mínima del salón.
for(int i = 0; i<=(n-1); i++){
if(nots[i]>max){
max = nots[i];
n1 = i+1;
}
if(nots[i]<min){
min = nots[i];
n2 = i+1;
}
}
//Presentación de los datos en pantalla
std::cout<<"-La suma de todas las calificaciones es de = "<<sumaN<<std::endl;
std::cout<<"-El promedio del salón es de = "<<promedioA<<std::endl;
std::cout<<"-La mejor calificación fue de "<<max<<" y pertenece al alumno N°"<<n1<<std::endl;
std::cout<<"-La peor calificación fue de "<<min<<" y pertenece al alumno N°"<<n2<<std::endl;
//promedioA estará almacenado en dos rangos distintos, en uno sumado 1 y el otro restado 1.
rango1 = promedioA+1;
rango2 = promedioA-1;
std::cout<<"-Alumnos que se encuntran dentro del promedio ["<<rango1<<","<<rango2<<"] entre las notas de todos:"<<std::endl;
//Ciclo FOR para saber cual/es estudiantes están en el rango del promedio de la suma de todas las notas de los estudiantes(línea 50 y 56).
for(int i = 0; i<=(n-1); i++){
if(nots[i]<=rango1 && nots[i]>=rango2){
std::cout<<"Alumno N°"<<i+1<<" = "<<nots[i]<<std::endl;
}
}
//Ciclo FOR paber cual/es estudiantes tienen una nota menor o igual a 6(nots6[n]), desde el array de las notas originales(nots[n]).
std::cout<<std::endl<<"-Los alumnos con una nota menor o igual a 6, son los siguientes:"<<std::endl<<std::endl;
for(int i = 0; i<=(n-1); i++){
if(nots[i]<=6){
nots6[i] = nots[i];
std::cout<<"Alumno N°"<<(i+1)<<" saco una nota de = "<<nots6[i]<<std::endl;
}
}
//Preguntar al usuario si desea añadir puntos extras a todos los estudiantes que tiene una nota menor o igual que 6.
std::cout<<std::endl;
std::cout<<"¿Desea añadirles un punto extra? (Si[s]/No[n]) = "; std::cin>>digit;
std::cout<<std::endl;
//Si digita 's' o 'S', se le pedirá cuantos puntos extras desea añadirles
if(digit == 's' || digit == 'S'){
std::cout<<"¿Que puntaje extra desea añadirles a todos? : "; std::cin>>pex;
//Ciclo FOR para saber cuales notas tienen menor a 6(nots6[n]) desde el array de las notas originales(nots[n]). Para luego sumarles el punto extra a cada una.
for(int i = 0; i<=(n-1); i++){
if(nots[i]<=6){
nots6[i] = nots[i];
puntex = nots6[i] + pex;
std::cout<<"El alumno N°"<<(i+1)<<" con nota = "<<nots6[i]<<" // Con los "<<pex<<" puntos extras tiene = "<<puntex<<std::endl;
}
}
//Ciclo DO WHILE para preguntarle al usuario si desde volver a calcular las notas o salir del programa.
do{
std::cout<<std::endl<<"Desea salir del programa [1] o volver a calcular las notas de sus alumnos[2]"<<std::endl;
std::cout<<"Opción = "; std::cin>>option;
if(option == 2){
return main();
} else if(option>2){//ELSE IF si el usuario digita el 3 o un número mayor a este.
std::cout<<std::endl<<"ERROR: Plazo del 1 al 2 para elegir. Vuelve a elegir"<<std::endl;
} else{
std::cout<<std::endl<<"Gracias por usar este programa :D";
return 0;
}
}while(option>=2);
}else if(digit == 'n' || digit == 'N'){ //Si el usuario digita 'n' o 'N'
//Ciclo DO WHILE para preguntarle al usuario si desde volver a calcular las notas o salir del programa.
do{
std::cout<<"Desea salir del programa [1] o volver a calcular las notas de sus alumnos[2]"<<std::endl;
std::cout<<"Opción = "; std::cin>>option;
if(option == 2){
return main();
} else if(option>2){//ELSE IF si el usuario digita el 3 o un número mayor a este.
std::cout<<std::endl<<"ERROR: Plazo del 1 al 2 para elegir. Vuelve a elegir"<<std::endl;
} else{
std::cout<<std::endl<<"Gracias por usar este programa :D";
return 0;
}
}while(option>=2);
}
}