/******************************************************************/
/* Program[i]: m[i].c */
/* Created By: Guy "Smiley" McArthur (smiley@seds.lpl.arizona.edu)*/
/* Purpose: Reads in Messier Catalog, prints out a HTML file for */
/* each object */
/******************************************************************/
#include<stdio.h>
int main(void);
int i = 0, t = 0;
char file[11];
FILE *fp; /* m???.html */
FILE *in; /* data.txt */
struct MESSIER
{
int number;
int ngc;
char con[3];
int type;
char type_link[12];
int alpha;
float a_min;
int delta;
int d_min;
float mag;
float ly;
char description[30];
} m[111];
/********************************************************************/
int main(void)
{
char data[80];
char link1[10];
char link2[10];
char link3[10];
if((in = fopen("data.txt", "r")) == NULL) return(0);
while(!feof(in))
{
++i;
fgets(data, 81, in);
sscanf(data, "%d,%d,%3c,%d,%d,%f,%d,%d,%f,%f",&m[i].number,&m[i].ngc,m[i].con,&m[i].type,&m[i].alpha,&m[i].a_min,&m[i].delta,&m[i].d_min,&m[i].mag,&m[i].ly);
switch(m[i].type)
{
case(1):
sprintf(m[i].description,"Open Cluster");
sprintf(m[i].type_link, "cluster.html");
break;
case(2):
sprintf(m[i].description,"Globular Cluster");
sprintf(m[i].type_link, "cluster.html");
break;
case(3):
sprintf(m[i].description,"Planetary Nebula");
sprintf(m[i].type_link, "nebula.html");
break;
case(4):
sprintf(m[i].description,"Diffuse Nebula");
sprintf(m[i].type_link, "nebula.html");
break;
case(5):
sprintf(m[i].description,"Spiral Galaxy");
sprintf(m[i].type_link, "galaxy.html");
break;
case(6):
sprintf(m[i].description,"Elliptical Cluster");
sprintf(m[i].type_link, "galaxy.html");
break;
case(7):
sprintf(m[i].description, "Irregular Galaxy");
sprintf(m[i].type_link, "galaxy.html");
break;
case(8):
sprintf(m[i].description,"Double Star");
sprintf(m[i].type_link, "cluster.html");
break;
case(9):
sprintf(m[i].description,"Supernova Remnant");
sprintf(m[i].type_link, "nebula.html");
break;
}/* end switch */
}/* end while, end pre-loop */
for(i=1 ; i<111 ; i++) /* Main for loop *********************************/
{
/* determine next galaxy, next nebula, next cluster*/
for(t = i+1; t<112 ; ++t)
{
/* Find Next Cluster */
if(m[t].type == 1 || m[t].type == 2 || m[t].type == 8)
{
sprintf(link1, "m%03i.html", t);
break;
}
}
for(t = i+1; t<112 ; ++t)
{
/* Find Next Nebula */ if(m[t].type == 3 || m[t].type == 4 || m[t].type == 9)
{
sprintf(link2, "m%03i.html", t);
break;
}
}
for(t = i+1; t<112 ; ++t)
{
/* Find Next Galaxy */ if(m[t].type == 5 || m[t].type == 6 || m[t].type == 7)
{
sprintf(link3, "m%03i.html", t);
break;
}
}
/* Determine File name */
sprintf(file, "m%03i.html", i);
if((fp = fopen(file, "wt")) == NULL)
{
printf("Can't open file %s", file);
return(0);
}
printf("Writing %s\n", file);
/* Write HTML */
fprintf(fp, "<HEAD><TITLE>Messier Object %i</TITLE></HEAD>\n\n\n", i);
fprintf(fp, "<BODY>\n");
fprintf(fp, "<H1>\n\t<a href=\"../large/m%i.gif\">", i);
fprintf(fp, "<IMG ALT=\"m%i.gif\" SRC=\"../small/m%i.gif\" BORDER=0></a>\tM %i\n</H1>\n\n", i, i, i);
fprintf(fp, "<i>\t<A HREF=\"../%s\">%s</A>\tM%i (NGC %i)</i>\n<p>\n\n", m[i].type_link, m[i].description, i, m[i].ngc);
fprintf(fp, "->Type Text Description and Information HERE<-\n<p>\n\n");
fprintf(fp, "<TABLE BORDER=3>\n");
fprintf(fp, "\t<TR>\n");
fprintf(fp, "\t\t<TH ALIGN=LEFT>Right ascension\t</TH>\n");
fprintf(fp, "\t\t<TD ALIGN=RIGHT>%02i : %02.1f\t(hours : minutes)</TD>\n\t</TR>\n", m[i].alpha, m[i].a_min);
fprintf(fp, "\t<TR>\n");
fprintf(fp, "\t\t<TH ALIGN=LEFT>Declination\t</TH>\n");
fprintf(fp, "\t\t<TD ALIGN=RIGHT>%+03i : %02i\t(degrees : minutes)</TD>\n\t</TR>\n", m[i].delta, m[i].d_min);
fprintf(fp, "\t<TR>\n");
fprintf(fp, "\t\t<TH ALIGN=LEFT>Distance\t</TH>\t\n");
fprintf(fp, "\t\t<TD ALIGN=CENTER>%.1f\t(light-years*10^3)</TD>\n", m[i].ly);
fprintf(fp, "\t</TR>\n");
fprintf(fp, "\t<TR>\n");
fprintf(fp, "\t\t<TH ALIGN=LEFT>Visual magnitude</TH>\n");
fprintf(fp, "\t\t<TD ALIGN=CENTER>\t%.1f\t</TD>\n", m[i].mag);
fprintf(fp, "\t</TR>\n");
fprintf(fp, "</TABLE>\n\n<P>\n\n");
fprintf(fp, "<a href=\"http://seds.lpl.arizona.edu/\">");
fprintf(fp, "<img alt=\"SEDS\" src=\"../seds.gif\"></a>\n");
fprintf(fp, "<a href=\"../Messier.html\">");
fprintf(fp, "\t<img alt=\"Home\" src=\"../messier.gif\"></a>\n");
fprintf(fp, "<a href=\"m%03i.html\">", i-1);
fprintf(fp, "<img alt=\"Backward\" src=\"../backward.gif\"></a>\n");
fprintf(fp, "<a href=\"m%03i.html\">", i+1);
fprintf(fp, "<img alt=\"Forward\" src=\"../forward.gif\"></a>\n");
fprintf(fp, "<a href=\"%s\"><img alt=\"Next Cluster\" src=\"../globular.ico.gif\"></a>\n", link1);
fprintf(fp, "<a href=\"%s\"><img alt=\"Next Nebula\" src=\"../nebula.ico.gif\"></a>\n", link2);
fprintf(fp, "<a href=\"%s\"><img alt=\"Next Galaxy\" src=\"../galaxy.ico.gif\"></a>\n", link3);
fprintf(fp, "\n\n\n\n");
fprintf(fp, "<!created by Guy Smiley>\n");
fprintf(fp, "<!smiley@seds.lpl.arizona.edu>\n");
fprintf(fp, "</BODY>");
fclose(fp);
}/* end big for **********************************************************/
fclose(in);
return(1);
}