#include <iostream>
using namespace std;
main(){
int n, mayor, menor, edad, acum, i ;
double pro ;
cout<< "Digite la cantidad de personas para procesar: ";cin>>n;
mayor = 0;
menor = 0;
acum = 0;
for( i=1 ;i<=n; i++){
cout<<"Digite la edad de la persona "<<i<<": ";cin>> edad;
}if (edad < 0 || edad > 120 ){
cout<<" Solo se aceptan edades entre 1 y 120 ";
i = i - 1;
}else{
if( edad >= 18 ){
mayor = mayor + 1;
}
if( edad < 18 ){
menor = menor + 1;
}
acum =acum + edad;
}
pro = int(acum / n);
cout<< "El promedio de edad es: "<<pro<<endl;
cout<< "La cantidad de personas mayores de edad es: "<<mayor<<endl;
cout<< "La cantidad de personas menores de edad es: "<<menor<<endl;
}
disculpen me podrian ayudar en este codigo no me bota la cantidad de personas bien y en psint si
y el siguiente problema ya lo intente pero no me sale :
3.- Crear un pseudocódigo que permita ingresar las ventas del año. Visualizar el total de ventas y la venta menor de los doce meses del año.
Hola,
El problema no es de sintaxis, es de dónde has puesto una llave de cierre. Mira esta línea de tu código:
for( i=1 ;i<=n; i++){
cout<<"Digite la edad de la persona "<<i<<": ";cin>> edad;
}if (edad < 0 || edad > 120 ){
Esa } después de leer edad cierra el for ahí mismo. Todo lo que viene después (la validación de la edad, sumar a mayor/menor, acumular en acum) se queda fuera del bucle, así que solo se ejecuta una vez, con el valor de edad que quedó de la última persona que metiste. Por eso el promedio y los conteos no te salen bien, aunque el psint (donde imagino que no cometiste ese error de llaves) sí te funcione.
La corrección es mover esa llave para que todo el bloque de validación quede dentro del for:
#include <iostream>
using namespace std;
int main() {
int n, mayor, menor, edad, acum, i;
double pro;
cout << "Digite la cantidad de personas para procesar: ";
cin >> n;
mayor = 0;
menor = 0;
acum = 0;
for (i = 1; i <= n; i++) {
cout << "Digite la edad de la persona " << i << ": ";
cin >> edad;
if (edad < 0 || edad > 120) {
cout << " Solo se aceptan edades entre 1 y 120 ";
i = i - 1;
} else {
if (edad >= 18) {
mayor = mayor + 1;
}
if (edad < 18) {
menor = menor + 1;
}
acum = acum + edad;
}
}
pro = acum / (double)n;
cout << "El promedio de edad es: " << pro << endl;
cout << "La cantidad de personas mayores de edad es: " << mayor << endl;
cout << "La cantidad de personas menores de edad es: " << menor << endl;
return 0;
}
De paso, cambié pro = int(acum / n) por pro = acum / (double)n: con la versión original, acum / n es una división entre enteros (pierdes los decimales antes de convertir a int, que ya era redundante porque acum/n ya da un entero), así que el promedio te salía siempre truncado. Casteando n a double antes de dividir consigues el promedio real.
Para el segundo ejercicio (ventas del año), es el mismo patrón: un bucle de 12 iteraciones, acumulando el total y guardando el mínimo con una variable que compares en cada vuelta (inicializándola con la primera venta leída, no con 0, porque si todas las ventas son mayores que 0 pero empiezas comparando desde 0 nunca actualizarás el mínimo).
Un saludo,
David Carrero