00001 #include "MyLib.h"
00002
00003
00004
00005 const int N=25;
00006 const int M=25;
00007
00008 void WyswietlMacierz(int n, int m, double a[][M])
00009 {
00010 int i,j;
00011
00012 for(i=0; i<n; i=i+1)
00013 {
00014 for(j=0; j<m; j=j+1)
00015 {
00016 printf("%6.2lf ",a[i][j]);
00017 }
00018 printf("\n");
00019 }
00020 }
00021
00022 void ZapisMacierzy(char *NazwaPliku, int n, int m, double a[][M])
00023 {
00024 FILE *fPlik;
00025 int i,j;
00026
00027 fPlik = fopen(NazwaPliku,"w");
00028 fprintf(fPlik,"%i\n%i\n",n,m);
00029 for(i=0; i<n; i=i+1)
00030 {
00031 for(j=0; j<m; j=j+1)
00032 {
00033 fprintf(fPlik,"%4.2lf\n",a[i][j]);
00034 }
00035 }
00036 fclose(fPlik);
00037 }
00038
00039 void OdczytMacierzy(char *NazwaPliku, int *n, int *m, double a[][M])
00040 {
00041 FILE *fPlik;
00042 int i,j;
00043
00044 fPlik = fopen(NazwaPliku,"r");
00045 fscanf(fPlik,"%i", n);
00046 fscanf(fPlik,"%i", m);
00047 for(i=0; i<*n; i=i+1)
00048 {
00049 for(j=0; j<*m; j=j+1)
00050 {
00051 fscanf(fPlik,"%lf",&a[i][j]);
00052 }
00053 }
00054 fclose(fPlik);
00055 }
00056
00057
00058
00059 const char separator[] = ";\r\t\n";
00060 const char sepStr[] = "\"";
00061
00062 int parserCSV(char *buf, char *ws[], int n, const char *delim)
00063 {
00064 int i;
00065
00066 ws[0] = buf;
00067 for(i=1; i<=n; i=i+1)
00068 {
00069 ws[i] = strpbrk(ws[i-1], delim);
00070 if( ws[i]==NULL)
00071 break;
00072 *ws[i] = '\0';
00073 ws[i] = ws[i]+1;
00074 }
00075 return i-1;
00076 }
00077
00078 void readCSV(char *nazwaCSV,int *N, struct TLst Lst[])
00079 {
00080 char buf[1024],*wr,*ws[32],*wt[3];
00081 FILE *fDane;
00082 int i,n;
00083
00084 fDane = fopen(nazwaCSV, "r");
00085 *N = 0;
00086 n = 3;
00087 if( fDane==NULL )
00088 {
00089 perror(nazwaCSV);
00090 exit(-1);
00091 }
00092 printf("z pliku \"%s\"", nazwaCSV);
00093 while( fgets(buf,1024,fDane)!=NULL )
00094 {
00095
00096
00097
00098 if( parserCSV(buf, ws, n, separator)!=n )
00099 continue;
00100 for(i=0; i<n; i=i+1)
00101 {
00102 if( parserCSV(ws[i], wt, 2, sepStr)==2 )
00103 {
00104 switch( i )
00105 {
00106 case 0:
00107 strcpy(Lst[*N].Im, wt[1]);
00108 break;
00109 case 1:
00110 strcpy(Lst[*N].Na, wt[1]);
00111 break;
00112 default:
00113 puts("ERROR: zly rekord !?");
00114 break;
00115 }
00116 }
00117 else
00118 {
00119 wr = strchr(ws[i],',');
00120 if( wr!=NULL)
00121 *wr = '.';
00122 Lst[*N].Ocena = atof(ws[i]);
00123 }
00124 }
00125 *N = *N+1;
00126 }
00127 fclose(fDane);
00128 }
00129