Dokumentacja pliku MyLib.c

#include "MyLib.h"

Idź do kodu źródłowego tego pliku.

Funkcje

void WyswietlMacierz (int n, int m, double a[][matrix_M])
void ZapisMacierzy (char *NazwaPliku, int n, int m, double a[][matrix_M])
void OdczytMacierzy (char *NazwaPliku, int *n, int *m, double a[][matrix_M])
int parserCSV (char *buf, char *ws[], int n, const char *delim)
void readCSV (char *nazwaCSV, int *N, struct TLst Lst[])
int NWD (int p, int q)
int NWDr (int p, int q, int *x, int *y)
int pmod (int b, int e, int m)

Zmienne

const int matrix_N = 25
const int matrix_M = 25
const char separator [] = ";\r\t\n"
const char sepStr [] = "\""


Dokumentacja funkcji

int NWD ( int  p,
int  q 
)

Najwiekszy Wspolny Dzielnik

Popularny algorytm Euklidesa

Definicja w linii 148 pliku MyLib.c.

Odwołania w genKluczeRSA().

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 }

int NWDr ( int  p,
int  q,
int *  x,
int *  y 
)

rozszerzony algorytm Euklidesa: $p*x+q*y=\mathop{\mathrm{NWD}}(p,q)$

Definicja w linii 168 pliku MyLib.c.

Odwołania w genKluczeRSA().

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 }

void OdczytMacierzy ( char *  NazwaPliku,
int *  n,
int *  m,
double  a[][matrix_M] 
)

Definicja w linii 45 pliku MyLib.c.

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 }

int parserCSV ( char *  buf,
char *  ws[],
int  n,
const char *  delim 
)

Obsluguje formaty Excel-CSV oraz TSV (ISO-8859-2)

Definicja w linii 73 pliku MyLib.c.

Odwołania w readCSV().

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 }

int pmod ( int  b,
int  e,
int  m 
)

naiwna potega $b^e \mathop{\mathrm{mod}} m$

Definicja w linii 197 pliku MyLib.c.

Odwołania w deKryptFile(), kryptFile() i main().

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 }

void readCSV ( char *  nazwaCSV,
int *  N,
struct TLst  Lst[] 
)

Definicja w linii 89 pliku MyLib.c.

Odwołuje się do TLst::Ocena, parserCSV(), separator i sepStr.

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 /* tu mozemy sprawdzic co jest wczytywane
00107         printf(">%s<\n",buf);
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 }

void WyswietlMacierz ( int  n,
int  m,
double  a[][matrix_M] 
)

Definicja w linii 14 pliku MyLib.c.

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 }

void ZapisMacierzy ( char *  NazwaPliku,
int  n,
int  m,
double  a[][matrix_M] 
)

Definicja w linii 28 pliku MyLib.c.

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 }


Dokumentacja zmiennych

const int matrix_M = 25

maksymalna ilosc kolumn w macierzy

Definicja w linii 12 pliku MyLib.c.

const int matrix_N = 25

maksymalna ilosc wierszy w macierzy

Definicja w linii 8 pliku MyLib.c.

const char separator[] = ";\r\t\n"

Definicja w linii 65 pliku MyLib.c.

Odwołania w readCSV().

const char sepStr[] = "\""

Definicja w linii 66 pliku MyLib.c.

Odwołania w readCSV().


Wygenerowano Wed Dec 16 02:25:48 2009 dla WIP w IM UWr. programem  doxygen 1.5.8