Hola elpis, te recomiendo que utilices [ code][ /code] (sin espacio en los corchetes) cuando publiques tu codigo, o en el editor utiliza el code, que esta junto al boton de quote para encerrar tu codigo, eso mejora la legibilidad.
Dicho eso, vamos al asunto:
Lo he probado, y al menos no entiendo eso que dices de que no detecta las opciones, quieres decir que no ejecuta las funciones dentro del switch/case? Eso quizas se deba a que tienes las opciones dentro de cada case como comentario, quita los comentarios para que se ejecute.
Pero dejando eso de lado, revisando tu codigo, hay varios errores en tu codigo, a continuacion ire mencionando los mas relevantes:
1. Defines una constante TEMP para guardar el numero maximo de temperaturas, pero no lo estas utilizando en varias funciones, utilizas directamente el numero, ejemplo: for(i=0;i<16;i++) en lugar de for(i=0;i<TEMP;i++)
2. Estas utilizando 16 como indice maximo de numero de temperaturas, cuando tu vector lo defines como struct temperatura temp[15], ademas el indice maximo en realidad es 14, no 15 ya que en C/C++ los arreglos comienzan en cero, entonces un vector de 15 elementos va de 0 a 14, no de 0 a 15. Si tratas de utilizar el indice 15 (que seria el equivalente al elemento 16) probablemente corrompas la memoria, y tu programa fallara, ademas como dije antes utiliza la constante definida TEMP para el tamaño de tu vector (struct temperatura temp[TEMP]) asi si cambias el tamaño del vector, automaticamente cambiara en todo el programa.
3. Otro detalle, en las funciones defines tu encabezado y pasas como parametro el vector con su tamaño, ejemplo:
void mayor(struct temperatura temp[TEMP])
Esto no es necesario con los vectores, de hecho, el tamaño del vector es ignorado, lo correcto es lo siguiente:
void mayor(struct temperatura temp[])
En el caso de arreglos de mas de una dimension (bidimencional o matriz, tridimencional, cuatridimencional, etc) solo es necesario definir el tamaño de las dimencion 2 en adelante, la primera dimension se deja vacia, por ejemplo, si utilizo una matriz de 5 x 5, se definiria el encabezado de la funcion asi:
void mi_funcion(int mi_matriz[][5])
Si deseas manejar correctamente el tamaño de un vector dentro de una funcion, la manera de hacerlo es utilizando un parametro adicional que guarde el tamaño, y utilizando ese parametro dentro de la funcion para asegurar que no sobrepasamos el limite del vector. Dicho eso, la manera mas correcta en realidad para definir tu encabezado seria:
void mayor(struct temperatura temp[], int tamano)
Donde "tamano" tendra el tamaño maximo de tu vector.
4. Tambien utilizas un puntero a char (char *ciudad) para guardar el nombre de la ciudad, esto puede inducir a problemas si no sabes bien hacia donde apunta el puntero (y deduzco por tu codigo que aun no sabes manipular bien los punteros), lo mas correcto para evitar problemas seria definir ciudad como un arreglo de char y copiar el contenido mediante la funcion strncpy(), que esta dentro de la libreria string.h, de la siguiente manera:
char ciudad[10];
strncpy(ciudad, temp[i].ciudad, 10);
5. La funcion funcion main() es la unica que no puede ser de tipo void, siempre debe ser de tipo int, y regresar un valor, si se declara como void esto puede traer problemas. Si no utilizas el valor de regreso, y para evitar errores de compilacion, solamente coloca un return 0; al final de tu main(). Para que te quede claro, la definicion de main() seria:
Mas informacion del porque no puede ser void main():
http://c-faq.com/ansi/voidmain.htmlhttp://www.parashift.com/c++-faq-lite/newbie.html#faq-29.3Por ultimo te dejo el codigo corregido de una de tus funciones para que te des una idea de como debe ser, te queda de tarea modificar el resto
// Deberas llamar a la funcion asi: mayor(temp, TEMP);
void mayor(struct temperatura temp[], int tamano)
{
clrscr();
int mayor, i;
char ciudad[10];
mayor = temp[0].temp_prom;
strncpy(ciudad, temp[0].ciudad, 10);
for(i = 0; i < tamano; i++)
if(temp[i].temp_prom > mayor)
{
mayor = temp[i].temp_prom;
strncpy(ciudad, temp[i].ciudad, 10);
}
printf("ntNumero mayor %i en %s",mayor,ciudad);
}
Saludos y suerte