El problema que tienes es que en el <main> estás pasando como parámetro el tipo de dato, cuando lo que tienes que pasar es el nombre del dato. El tipo solo se indica en el prototipo de la función y en su implementación.
Eso es algo muy muy básico.
En la función <analizarFichero(string)> si le estás pasando el nombre como parámetro, no pidas el nombre dentro de la función. Si lo vas a pedir dentro de la función no se lo pases como parámetro, no sirve de nada.
El <exit (1)> va sin espacio. Es una función que tiene un número como parámetro, no es lo mismo que un <return 1>.
En la función <pedirNumeroPositivo(ifstream)> tienes que pasar el fichero por referencia usando también &.
No te vuelvo a poner ejemplos de cada función porque ya lo hice en el mensaje anterior que publiqué.
Y sí, la función <mostrarPresentacionPrograma()> está bien. Es cierto que no tiene mucho sentido para un <cout> pero normalmente se suele usar para explicar el funcionamiento del programa o cómo hay que usarlo y en caso de que el usuario lo use mal pues se llama a la función de nuevo para que vea cómo se usa.