Es un tema que ha salido varias veces en este foro; cuando entras por teclado con scanf la funcion lee el formato que le digas hasta encontrar un salto de linea (un enter); la lectura de stdin se comporta como una cola f.i.f.o.: caracter que lee caracter que saca sabiendo que el primer caracter que entra es el primero que sale. Por eso cuando lees %d se deja el salto de linea al final y en el siguiente scanf es el primero que encuentra y por tanto parece que salte el scanf. Se soluciona limpiando el stream de entrada
Código C:
Ver original#include <stdio.h>
#include <stdlib.h>
double media(double a, double b, double c);
void buida_bufer_teclat() {
char c;
do {
} while (c != '\n');
}
int main() {
double a, b, c, d;
char s_n = ' ';
while(s_n != 'n') {
printf("Inserte 3 numeros:\n"); scanf("%lf %lf %lf",&a
, &b
, &c
); buida_bufer_teclat();
d = media(a, b, c);
printf("Volver a empezar? (s/n)\n"); buida_bufer_teclat();
}
return 0;
}
double media (double a, double b, double c)
{
double med = (a + b + c) / 3;
return med;
}
De la funcion buida_bufer_teclat() puedes encontrar mil versiones por ahi, todas hacen lo mismo.
"...El problema esta en que no me deja si triar..."
En vez de 'triar' puedes poner 'optar' que se escribe igual y al menos significa algo :)
Saludos
vosk