Es un ejercicio relativamente sencillo, yo estoy en DAI y tuve que hacer uno similar pero algo más complejo hace poco. Lo que debes de hacer es lo que te ha dicho diskontrol. Te voy a poner el código del que tuve que hacer yo, tiene bastantes cosas que no necesita el tuyo pero si lo entiendes te irá bien:
/*
16. Introducir por teclado las edades de 25 alumnos. Validar que son números comprendidos entre 17 y 30. Obtener y visualizar
la edad del más mayor y ver cuántas veces se repite esa edad. Obtener y visualizar la edad del menor y ver cuántas veces se
repite esa edad. Además indicar la edad media (sin decimales) de la clase.
*/
Por cierto, aprovecho este post para 2 cosas: para presentarme, y para que vosotros los expertos echéis un vistazo a ver qué cagadas (malos hábitos) tengo en mis códigos para ir haciendo mis programas más eficientes...
/*
16. Introducir por teclado las edades de 25 alumnos. Validar que son números comprendidos entre 17 y 30. Obtener y visualizar
la edad del más mayor y ver cuántas veces se repite esa edad. Obtener y visualizar la edad del menor y ver cuántas veces se
repite esa edad. Además indicar la edad media (sin decimales) de la clase.
*/
Código:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int edad, contador=1, mayor=0, contmay=0, contmen=0, suma=0, menor=30, media=0;
for (contador; contador<=8;contador++)
{
printf("Introducir edad entre 17 y 30: ");
scanf("%d", &edad);
fflush(stdin);
while (edad<17 || edad>30)
{
printf("Edad incorrecta, introducela otra vez: ");
scanf("%d", &edad);
}
if (edad>mayor) mayor=edad;
if (edad<menor) menor=edad;
if (edad==mayor) contmay++;
if (edad==menor) contmen++;
suma+=edad;
}
media= suma/contador;
printf("La edad del mayor es %d, la edad del menor es %d, y la edad media es %d\n",mayor,menor,media);
system("pause");
}
Lo que tienes que cambiar es que no necesitas calcular la media, ni cuardar contadores, tan sólo el número mayor, el menor, los números que quiera introducir y otra para guardar los introducidos. En un bucle for de 0 al límite elegido haces algo similar a lo que hice yo, ahorrándote el proceso de verificar nada.#include <stdlib.h>
int main()
{
int edad, contador=1, mayor=0, contmay=0, contmen=0, suma=0, menor=30, media=0;
for (contador; contador<=8;contador++)
{
printf("Introducir edad entre 17 y 30: ");
scanf("%d", &edad);
fflush(stdin);
while (edad<17 || edad>30)
{
printf("Edad incorrecta, introducela otra vez: ");
scanf("%d", &edad);
}
if (edad>mayor) mayor=edad;
if (edad<menor) menor=edad;
if (edad==mayor) contmay++;
if (edad==menor) contmen++;
suma+=edad;
}
media= suma/contador;
printf("La edad del mayor es %d, la edad del menor es %d, y la edad media es %d\n",mayor,menor,media);
system("pause");
}
Por cierto, aprovecho este post para 2 cosas: para presentarme, y para que vosotros los expertos echéis un vistazo a ver qué cagadas (malos hábitos) tengo en mis códigos para ir haciendo mis programas más eficientes...

Bueno, tengo entendido que llamar al sistema es un desperdicio y una mala maña, que para eso simplemente es usar un getchar(); Pero el codigo esta muy bien hecho, solo seria hacer una mejor organizacion, yo lo hago así:
Original
Citar
if (edad>mayor) mayor=edad;
if (edad<menor) menor=edad;
if (edad==mayor) contmay++;
if (edad==menor) contmen++;
suma+=edad;
.
.
.
system("PAUSE");
if (edad<menor) menor=edad;
if (edad==mayor) contmay++;
if (edad==menor) contmen++;
suma+=edad;
.
.
.
system("PAUSE");
Sugerencia
Citar
if (edad>mayor)
{mayor=edad; }
if (edad<menor)
{menor=edad; }
if (edad==mayor)
{contmay++;}
if (edad==menor)
{contmen++;}
suma+=edad;
.
.
.
getchar()
{mayor=edad; }
if (edad<menor)
{menor=edad; }
if (edad==mayor)
{contmay++;}
if (edad==menor)
{contmen++;}
suma+=edad;
.
.
.
getchar()










Autor


En línea








