qué significa ese "%12.8f" ?, o un "%d", "%5.11f" etc.. etc.
en el caso que presentás la función printf tiene dos argumentos. observemos:
printf(" P = %12.8f\n", P);
el primer argumento indica cómo se imprime lo que se quiere imprimir; da el formato de la impresión. en el string aparecen tres cosas distintas:
* texto: " P = ". eso se imprime exactamente como está.
* comandos con escape: "\n". significa que escribe un fin de línea. hay otros escapes, como \t para tabular.
* marcas que indican cómo escribir el segundo argumento: "%12.8f". estas cosas que aparecen luego de un % indican cómo se imprime el otro argumento. la f, indica que es un float, el 12 el ancho y el 8 la precisión (creo, hablo de memoria)
el caso %d quiere decir que vas a imprimir un int.
en en.wikipedia.org/wiki/Printf_format_string tenés un primer acercamiento a esta forma de especificar los datos.
con respecto al cout vs printf... ni idea
