00001 #include "MyLib.h"
00002
00003
00004
00008 const int matrix_N=25;
00012 const int matrix_M=25;
00013
00014 void WyswietlMacierz(int n, int m, double a[][matrix_M])
00015 {
00016 int i,j;
00017
00018 for(i=0; i<n; i=i+1)
00019 {
00020 for(j=0; j<m; j=j+1)
00021 {
00022 printf("%6.2lf ",a[i][j]);
00023 }
00024 printf("\n");
00025 }
00026 }
00027
00028 void ZapisMacierzy(char *NazwaPliku, int n, int m, double a[][matrix_M])
00029 {
00030 FILE *fPlik;
00031 int i,j;
00032
00033 fPlik = fopen(NazwaPliku,"w");
00034 fprintf(fPlik,"%i\n%i\n",n,m);
00035 for(i=0; i<n; i=i+1)
00036 {
00037 for(j=0; j<m; j=j+1)
00038 {
00039 fprintf(fPlik,"%4.2lf\n",a[i][j]);
00040 }
00041 }
00042 fclose(fPlik);
00043 }
00044
00045 void OdczytMacierzy(char *NazwaPliku, int *n, int *m, double a[][matrix_M])
00046 {
00047 FILE *fPlik;
00048 int i,j;
00049
00050 fPlik = fopen(NazwaPliku,"r");
00051 fscanf(fPlik,"%i", n);
00052 fscanf(fPlik,"%i", m);
00053 for(i=0; i<*n; i=i+1)
00054 {
00055 for(j=0; j<*m; j=j+1)
00056 {
00057 fscanf(fPlik,"%lf",&a[i][j]);
00058 }
00059 }
00060 fclose(fPlik);
00061 }
00062
00063
00064
00065 const char separator[] = ";\r\t\n";
00066 const char sepStr[] = "\"";
00067
00073 int parserCSV(char *buf, char *ws[], int n, const char *delim)
00074 {
00075 int i;
00076
00077 ws[0] = buf;
00078 for(i=1; i<=n; i=i+1)
00079 {
00080 ws[i] = strpbrk(ws[i-1], delim);
00081 if( ws[i]==NULL)
00082 break;
00083 *ws[i] = '\0';
00084 ws[i] = ws[i]+1;
00085 }
00086 return i-1;
00087 }
00088
00089 void readCSV(char *nazwaCSV,int *N, struct TLst Lst[])
00090 {
00091 char buf[1024],*wr,*ws[32],*wt[3];
00092 FILE *fDane;
00093 int i,n;
00094
00095 fDane = fopen(nazwaCSV, "r");
00096 *N = 0;
00097 n = 3;
00098 if( fDane==NULL )
00099 {
00100 perror(nazwaCSV);
00101 exit(-1);
00102 }
00103 printf("z pliku \"%s\"", nazwaCSV);
00104 while( fgets(buf,1024,fDane)!=NULL )
00105 {
00106
00107
00108
00109 if( parserCSV(buf, ws, n, separator)!=n )
00110 continue;
00111 for(i=0; i<n; i=i+1)
00112 {
00113 if( parserCSV(ws[i], wt, 2, sepStr)==2 )
00114 {
00115 switch( i )
00116 {
00117 case 0:
00118 strcpy(Lst[*N].Im, wt[1]);
00119 break;
00120 case 1:
00121 strcpy(Lst[*N].Na, wt[1]);
00122 break;
00123 default:
00124 puts("ERROR: zly rekord !?");
00125 break;
00126 }
00127 }
00128 else
00129 {
00130 wr = strchr(ws[i],',');
00131 if( wr!=NULL)
00132 *wr = '.';
00133 Lst[*N].Ocena = atof(ws[i]);
00134 }
00135 }
00136 *N = *N+1;
00137 }
00138 fclose(fDane);
00139 }
00140
00141
00142
00148 int NWD(int p, int q)
00149 {
00150 int r;
00151
00152 if( p<1 || q<1 )
00153 {
00154 puts("Ups ...");
00155 exit(-1);
00156 }
00157 for(r=p%q; r!=0; r=p%q)
00158 {
00159 p = q;
00160 q = r;
00161 }
00162 return q;
00163 }
00164
00168 int NWDr(int p, int q, int *x, int *y)
00169 {
00170 int r,t,xp,xr,yp,yr;
00171
00172 if( p<1 || q<1 )
00173 {
00174 puts("Ups ...");
00175 exit(-1);
00176 }
00177 xp = *y = 1;
00178 *x = yp = 0;
00179 for(r=p%q; r!=0; r=p%q)
00180 {
00181 t = p/q;
00182 p = q;
00183 q = r;
00184 xr = *x;
00185 *x = xp - t*xr;
00186 xp = xr;
00187 yr = *y;
00188 *y = yp - t*yr;
00189 yp = yr;
00190 }
00191 return q;
00192 }
00193
00197 int pmod(int b, int e, int m)
00198 {
00199 int c;
00200
00201 for(c=1; 1<=e; e=e-1)
00202 {
00203 c = (c*b)%m;
00204 }
00205 return c;
00206 }
00207