Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
void linreg(float *x,float *y,int n,float *m,float *b);
int main(int argc, char *argv[])
{
int i; //year
int j; //month
int k; //date
FILE *fpm;
FILE *fpb;
FILE *fp;
char fn[100];
//fpout = fopen("dataesout.txt","w");
fpm = fopen("slopesout.txt","w");
fpb = fopen("interceptsout.txt","w");
for(i=2010;i<=2011;i++)
{
for(j=1;j<12;j++)
{
for(k=1;k<=31;k++)
{
int z;
int n=0;
float x[5000];
float y[5000];
float m;
float b;
if(j==1) {
sprintf(fn,"jan %d %d.dat",k,i); // makes the file name into a string
fp = fopen(fn,"r");
z=0.0;
while(fscanf(fp,"%g %g",&x[z],&y[z])!=EOF) {
z++;
}
n=z;
linreg(x,y,n,&m,&b);
//calculate m and b
fprintf(fpm,"%g\n",&m);
//save each to a file
fprintf(fpb,"%g\n",&b);
fclose(fp);
}
else if(j==2) {
if(k<=28){
sprintf(fn,"feb %d %d.dat",k,i);
fp = fopen(fn,"r");
z=0.0;
while(fscanf(fp,"%g %g",&x[z],&y[z])!=EOF) {
z++;
}
n=z;
linreg(x,y,n,&m,&b);
//calculate m and b
fprintf(fpm,"%g\n",&m);
//save each to a file
fprintf(fpb,"%g\n",&b);
fclose(fp);
}
else if(j==3) {
sprintf(fn,"mar %d %d.dat",k,i);
fp = fopen(fn,"r");
z=0.0;
while(fscanf(fp,"%g %g",&x[z],&y[z])!=EOF) {
z++;
}
n=z;
linreg(x,y,n,&m,&b);
//calculate m and b
fprintf(fpm,"%g\n",&m);
//save each to a file
fprintf(fpb,"%g\n",&b);
fclose(fp);
}
else if(j==4) {
if(k<=30) {
sprintf(fn,"apr %d %d.dat",k,i);
fp = fopen(fn,"r");
z=0.0;
while(fscanf(fp,"%g %g",&x[z],&y[z])!=EOF) {
z++;
}
n=z;
linreg(x,y,n,&m,&b);
//calculate m and b
fprintf(fpm,"%g\n",&m);
//save each to a file
fprintf(fpb,"%g\n",&b);
fclose(fp);
}
else if(j==5) {
sprintf(fn,"may %d %d.dat",k,i);
fp = fopen(fn,"r");
z=0.0;
while(fscanf(fp,"%g %g",&x[z],&y[z])!=EOF) {
z++;
}
n=z;
linreg(x,y,n,&m,&b);
//calculate m and b
fprintf(fpm,"%g\n",&m);
//save each to a file
fprintf(fpb,"%g\n",&b);
fclose(fp);
}
else if(j==6) {
if(k<=30){
sprintf(fn,"jun %d %d.dat",k,i);
fp = fopen(fn,"r");
z=0.0;
while(fscanf(fp,"%g %g",&x[z],&y[z])!=EOF) {
z++;
}
n=z;
linreg(x,y,n,&m,&b);
//calculate m and b
fprintf(fpm,"%g\n",&m);
//save each to a file
fprintf(fpb,"%g\n",&b);
fclose(fp);
}
else if(j==7) {
sprintf(fn,"jul %d %d.dat",k,i);
fp = fopen(fn,"r");
z=0.0;
while(fscanf(fp,"%g %g",&x[z],&y[z])!=EOF) {
z++;
}
n=z;
linreg(x,y,n,&m,&b);
//calculate m and b
fprintf(fpm,"%g\n",&m);
//save each to a file
fprintf(fpb,"%g\n",&b);
fclose(fp);
}
else if(j==8) {
sprintf(fn,"aug %d %d.dat",k,i);
fp = fopen(fn,"r");
z=0.0;
while(fscanf(fp,"%g %g",&x[z],&y[z])!=EOF) {
z++;
}
n=z;
linreg(x,y,n,&m,&b);
//calculate m and b
fprintf(fpm,"%g\n",&m);
//save each to a file
fprintf(fpb,"%g\n",&b);
fclose(fp);
}
else if(j==9) {
if(k<=30){
sprintf(fn,"sep %d %d.dat",k,i);
fp = fopen(fn,"r");
z=0.0;
while(fscanf(fp,"%g %g",&x[z],&y[z])!=EOF) {
z++;
}
n=z;
linreg(x,y,n,&m,&b);
//calculate m and b
fprintf(fpm,"%g\n",&m);
//save each to a file
fprintf(fpb,"%g\n",&b);
fclose(fp);
}
else if(j==10) {
sprintf(fn,"oct %d %d.dat",k,i);
fp = fopen(fn,"r");
z=0.0;
while(fscanf(fp,"%g %g",&x[z],&y[z])!=EOF) {
z++;
}
n=z;
linreg(x,y,n,&m,&b);
//calculate m and b
fprintf(fpm,"%g\n",&m);
//save each to a file
fprintf(fpb,"%g\n",&b);
fclose(fp);
}
else if(j==11) {
if(k<=30) {
sprintf(fn,"nov %d %d.dat",k,i);
fp = fopen(fn,"r");
z=0.0;
while(fscanf(fp,"%g %g",&x[z],&y[z])!=EOF) {
z++;
}
n=z;
linreg(x,y,n,&m,&b);
//calculate m and b
fprintf(fpm,"%g\n",&m);
//save each to a file
fprintf(fpb,"%g\n",&b);
fclose(fp);
}
else if(j==12) {
sprintf(fn,"dec %d %d.dat",k,i);
fp = fopen(fn,"r");
z=0.0;
while(fscanf(fp,"%g %g",&x[z],&y[z])!=EOF) {
z++;
}
n=z;
linreg(x,y,n,&m,&b);
//calculate m and b
fprintf(fpm,"%g\n",&m);
//save each to a file
fprintf(fpb,"%g\n",&b);
fclose(fp);
}
//fprintf(fpout,"%d %d %d.dat\n",j,k,i);
}
}
}
fclose(fpb);
fclose(fpm);
system("PAUSE");
return 0;
}
void linreg(float *x, float *y, int n, float *m, float *b)
{
int p;
float sumx=0.0;
float sumy=0.0;
float sumxy = 0.0;
float sumxx=0.0;
float sum2x=0.0;
float sumyy=0.0;
float sum2y=0.0;
for(p=0;p<n;p++)
{
sumx = sumx + x[p];
sumy = sumy + y[p];
sumxy = sumxy + (x[p]*y[p]);
sumxx = sumxx + (x[p]*x[p]);
sum2x = sumx*sumx;
sumyy = sumyy + (y[p]*y[p]);
sum2y = sumy*sumy;
}
*m = (((n*sumxy)-(sumx*sumy))/((n*sumxx)-(sum2x)));
*b = ((sumy - ((*m)*sumx))/n);
return ;
}