Te ha quedado un poco caótico, con muchísimas variables innecesarias emy algunas expresiones que puedes eliminar y no pasa nada.
Lineas 6, 7 y 8 deberían ir dentro de main. El motivo es que si declaras las variables globales, estas van a poder ser accesibles por librerías de otros programadores que incluyas en tu código, tus propias funciones que no deberían de poder acceder a ellas, se malgasta memoria al estar siempre accesibles hasta que se acabe el programa, etc. Usa solo globales cuando sea imprescindible.
Linea 11 y demás; deberías de identar (dar espacios antes de la palabra) dentro de cada cuerpo de función, bucle, condicional, etc. Es recomendable dar entre 2 y 4 (ambos incluidos) espacios. A tu gusto pero el número que eligas úsalo de forma consistente en todo el código del programa. Dar espacios facilita la interpretación del código a simple vista, mejora la lectura y es más sencillo detectar errores como la falta de un corchete.
En tu función int PedirEstudiantesEnRango(), retornas números, pero en ningún moemento haces nada de nada con el valor que se retorna. Si quieres una función que haga algo pero que no retorne nada, entonces declárala como void en lugar de int y te ahorras la linea de return. Lo lógico cuando usas funciones, es que hagan tareas más concretas y especializadas, y no funciones que hagan todo.
En lugar de usar globales dentro de la función PedirEstudianteEnRango, lo correcto es declarar las variables dentro de main y enviárselas como argumento de la llamada a la función. Y en la propia funcion las pones como parámetros. Ejemplo de lo que haces:
Ejemplo de lo que deberías hacer:
La linea 28 no hace nada. Tu compilador debería de lanzarte un warning avisándote de que eso ahí no se está usando para nada.
En las linea 29 y 31 los paréntesis en (i+1) no hacen nada, es como no ponerlos.
En la linea 51 tienes que convertir a doble ambos valores primero antes de dividirlos para que no trunque los decimales. Tal como lo tienes si divides 3 / 2 te da 1 en lugar de 1.5
Te dejo como lo haría yo por si te sirve de orientación para mejorar tu versión del programa conjuntamente con los consejos que te dejo y los que te ha dejado K-YreX. Repasa sus consejos y trata de entenderlos todos.
Lineas 6, 7 y 8 deberían ir dentro de main. El motivo es que si declaras las variables globales, estas van a poder ser accesibles por librerías de otros programadores que incluyas en tu código, tus propias funciones que no deberían de poder acceder a ellas, se malgasta memoria al estar siempre accesibles hasta que se acabe el programa, etc. Usa solo globales cuando sea imprescindible.
Linea 11 y demás; deberías de identar (dar espacios antes de la palabra) dentro de cada cuerpo de función, bucle, condicional, etc. Es recomendable dar entre 2 y 4 (ambos incluidos) espacios. A tu gusto pero el número que eligas úsalo de forma consistente en todo el código del programa. Dar espacios facilita la interpretación del código a simple vista, mejora la lectura y es más sencillo detectar errores como la falta de un corchete.
En tu función int PedirEstudiantesEnRango(), retornas números, pero en ningún moemento haces nada de nada con el valor que se retorna. Si quieres una función que haga algo pero que no retorne nada, entonces declárala como void en lugar de int y te ahorras la linea de return. Lo lógico cuando usas funciones, es que hagan tareas más concretas y especializadas, y no funciones que hagan todo.
En lugar de usar globales dentro de la función PedirEstudianteEnRango, lo correcto es declarar las variables dentro de main y enviárselas como argumento de la llamada a la función. Y en la propia funcion las pones como parámetros. Ejemplo de lo que haces:
Código (cpp) [Seleccionar]
int numero1, numero2;
int sumar();
int main(){
numero1 = 30;
numero2 = 40;
sumar();
return 0;
}
int sumar(){
int resultado=numero1+numero2;
cout<<"El resultado es: "<<resultado;
return resultado;
}
Ejemplo de lo que deberías hacer:
Código (cpp) [Seleccionar]
int sumar(int num1, int num2);
int main() {
int numero1 = 30;
int numero2 = 40;
cout << "El resultado es: " << sumar(30, 40);
}
int sumar(int num1, int num2) {
return num1 + num2;
}
La linea 28 no hace nada. Tu compilador debería de lanzarte un warning avisándote de que eso ahí no se está usando para nada.
En las linea 29 y 31 los paréntesis en (i+1) no hacen nada, es como no ponerlos.
En la linea 51 tienes que convertir a doble ambos valores primero antes de dividirlos para que no trunque los decimales. Tal como lo tienes si divides 3 / 2 te da 1 en lugar de 1.5
Te dejo como lo haría yo por si te sirve de orientación para mejorar tu versión del programa conjuntamente con los consejos que te dejo y los que te ha dejado K-YreX. Repasa sus consejos y trata de entenderlos todos.
Código (cpp) [Seleccionar]
#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct Estudiante {
int edad;
string sexo;
string carrera;
};
int promedioEdadEstudiantesIngenieria( vector<Estudiante> &listado );
int porcentajeHombresUniversitarios( vector<Estudiante> &listado );
int porcentajeMujeresEstudianIngenieria( vector<Estudiante> &listado );
int main() {
int numeroEstudiantes = 0;
cout << "Cuantos estudiantes vas a introducir?" << endl;
cin >> numeroEstudiantes;
vector<Estudiante> listadoEstudiantes;
for (int i = 0; i < numeroEstudiantes; ++i) {
Estudiante estudiante;
cout << "Edad del estudiante?" << endl;
cin >> estudiante.edad;
cout << "Sexo del estudiante?" << endl;
cin >> estudiante.sexo;
cout << "Carrera que cursa el estudiante?" << endl;
cin >> estudiante.carrera;
listadoEstudiantes.push_back(estudiante);
}
cout << "Promedio de edad de los estudiantes de ingenieria: " << promedioEdadEstudiantesIngenieria(listadoEstudiantes) << endl;
cout << "Porcentaje de universitarios masculinos: " << porcentajeHombresUniversitarios(listadoEstudiantes) << "%" << endl;
cout << "El " << porcentajeMujeresEstudianIngenieria(listadoEstudiantes) << "% de las mujeres universitarias estudian ingenieria" << endl;
return 0;
}
int promedioEdadEstudiantesIngenieria( vector<Estudiante> &listado ) {
int promedio = 0;
int numeroDeEstudiantesIngenieria = 0;
for (int i = 0; i < listado.size(); ++i) {
if (listado[i].carrera == "Ingenieria" || listado[i].carrera == "ingenieria") {
promedio += listado[i].edad;
++numeroDeEstudiantesIngenieria;
}
}
return promedio / numeroDeEstudiantesIngenieria;
}
int porcentajeHombresUniversitarios( vector<Estudiante> &listado ) {
int numeroHombres = 0;;
for (int i = 0; i < listado.size(); ++i) {
if (listado[i].sexo == "Hombre" || listado[i].sexo == "hombre") {
++numeroHombres;
}
}
return 100 / listado.size() * numeroHombres;
}
int porcentajeMujeresEstudianIngenieria( vector<Estudiante> &listado ) {
int numeroMujeresEnTodasCarreras = 0,
numeroMujeresEstudianIngenieria = 0;
for (int i = 0; i < listado.size(); ++i) {
if (listado[i].sexo == "Mujer" || listado[i].sexo == "mujer") {
++numeroMujeresEnTodasCarreras;
if (listado[i].carrera == "Ingenieria" || listado[i].carrera == "ingenieria") {
++numeroMujeresEstudianIngenieria;
}
}
}
return 100 / numeroMujeresEnTodasCarreras * numeroMujeresEstudianIngenieria;
}