Holaaaa...
Uhmmm, interesante propuesta, y como tengo 15 minutos para desayunar vamos a comentar un poco:
void main ()
{
int opcion;
int opcion2;
void e_1();
void e_2c();
void e_2si();
void e_2ci();
void e_bi();
uhhhhmmmmmmmmm.... me duele un poco a la vista, no es incorrecto que yo recuerde, pero, este... como que no. Las cabeceras de funciones siempre es mejor ponerlas fuera. Es más, si es un programa corto, puedes poner las funciones enteras encima del main(), y no hará falta que declares cabeceras.
Otro tema es la estandarización, parece mentira pero las cosas van mejor si se siguen las normas... y que mejores normas que las ANSI para estos casos: en lugar de void main(), pondría
int main(int argc, char** argv). El motivo es sencillo: por lo general, el sistema operativo o un programa que llame al tuyo espera una respuesta al finalizar el programa... por ejemplo, si devuelves 0 es que no hay problemas (por ejemplo, ya que suele depender del programa). Si haces este cambio de cabecera, al final debes retornar algo... si no sabes que retornar "return 0;" es una buena opción. Los dos parámetros que le pasas: el entero argc es el número de parámetros externos que recibe el programa, y argv un array que contiene los parámetros pasados, siendo 0 el nombre del mismo, 1 el primer parámetros, 2 el segundo...
En lugar de esperar un "entero" en la linea
scanf("%d",&opcion);, esperaría un carácter
scanf("%c",&opcion);. De esta forma el programa no petará si le insertas una 'q' en lugar de un '1'. para ello solo has de cambiar la '%d', por '%c' y "int opcion;" por "char opcion;". Otra cambio, o cambios, que deberás hacer es donde pongas una igualdad del estilo (opcion == 1), ahroa deberás poner (opcion == '1') (sea 1 o 3 o a o B, o J...), ya que no es lo mismo comparar valores enteros que valores de carácter.
En lugar de hacer tantos if, que afean mucho el código y pueden llegar a perder un poco, haría un switch. La sintaxis de este es la siguiente:
switch(opcion)
{
case '1':
printf("Como me gusta comer chipirones\n");
break;
case '2':
[...................]
break;
default:
printf("Opción incorrecta, calamar!\n");
}
clrscr() no es standard. Que yo recuerde solo exíste en la conio.h de Borland. Hay implementaciones "chungas" de la conio.h para otros SO, pero no se usan porque, a parte de desfasadas, son algo sucias y lentas. Es preferible remarcar cada linea dejando varias \n\n como separadores, que muchas veces limpiar la pantalla.
No uses con descaro los \n para separar una cadena dentro de un mismo printf... no es nada claro, a parte que en un programa de estas características no necesita optimizaciones de este tipo (tu solo harias una llamada a función, en lugar de tres... pero... no es el Doom 3...).
Sigue una metodología en la indentación, sea cual sea, pero síguela: si quieres poner el '{' justo después de un if, un while, una función... hazlo siempre... o si lo quieres poner debajo, pero aclarate! que cuesta de seguir.
if(pakito='a')
{
}
ó
if(pakito='a'){
}
Es a cuestión de gustos... mucha gente sigue la primera (como yo) porque es más rápido de ver cuales te faltan por cerrar. Otras personas prefieren la segunda, porque suele ser la indentación usada en programas comunitários y por software como Anjuta. Esto en el fondo da un poquitín igual, siempre y cuando os pongais deacuerdo, o al menos te pongas deacuerdo tu.
Comenta el coooooooodigo... esto que parece una tontería salva cabezas en el último momento. Es más, sabes que realmente no te dejarían liberar código bajo la GPL (o cualquier otra libre) si no está decentemente comentado? aunque puedas, no te mirarán con buenos ojos. Liberar el código sirve para que todos aprendamos... si el código es demasiado ofuscado y sin comentarios, nadie aprende.
No se me ocurre nada más... voy a acabar de desayunar que el ColaCado (como Bacalado) se me está enfriando, que en mi casa hace mucho frio... tanto que me he estado portando muy mal para ver si los reyes me traian carbón... me han traido unos troncho calcetines y unos gallumbos que me vienen pequeños... no, si tendrán razón los republicanos... pero tampoco me trajo nada el gordo ese.
Saludos!!!!