hola jpaulxD, el problema lo llevas bien encaminado quizás faltaría saber que pasaría si hay valores repetidos
la variable de salida de bucle 'x' debes asignarle un cero antes de entrar en el bucle y no en la pregunta del while, ahí deberías comparar "==", no asignar '='
la variable menos no es necesaria pues ya sabes cuales son los mas altos, así te ahorrarías una asignación, una suma, y una resta además de la variable
cuando preguntas si hay otra forma ...
pues claro que hay, por ejemplo lo mismo con un for que se repita solo una vez
for(int i=0; i<1; i++){ ... }
otra forma de hacerlo es con el operador ternario '?' y te pongo el ejemplo:
Código c:
Ver original#include <stdio.h>
void main(){
int n1, n2 ,n3, n4, promedio;
printf("introduce 4 numeros separados por espacios:\n"); scanf("%i %i %i %i",&n1
, &n2
, &n3
, &n4
);
(n1<=n2 && n1<=n3 && n1<=n4) ? (promedio=(n2+n3+n4)/3) // el n1 queda último
: ((n2<=n1 && n2<=n3 && n2<=n4) ? (promedio = (n1+n3+n4)/3) // el n2 queda último
:((n3<=n1 && n3<=n2 && n3<=n4) ? (promedio = (n1+n2+n4)/3) // el n3 queda último
:(promedio = (n1+n2+n3)/3))); // el n4 queda último
printf("el promedio de los tres numeros mas altos es %i ", promedio
); }
espero te sirva