[WikiDyd] [TitleIndex] [WordIndex

Laboratorium ,,Języki i metodyka programowania I''

Projekt indywidualny: Obskurator w C

Proszę zaprojektować i wykonać program zmieniający program zapisany w języku C w taki sposób, aby trudno było go zrozumieć.

Program powinien umożliwiać przetwarzanie programów składających się z wielu plików i odwracanie skutków obskuracji.

Przykład - program oryginalny:

   1 #include <math.h>
   2 
   3 double delta( double a, double b, double c )
   4 {
   5   return b*b-4*a*c;
   6 }
   7 
   8 int real_roots( double a, double b, double c, double *x1, double *x2 )
   9 {
  10   double del= delta( a, b, c );
  11 
  12   if( del < 0 )
  13     return 1;   /* brak pierwiastkow */
  14 
  15   if( a == 0 ) {
  16     if( b == 0 )
  17       return 1;
  18     else {
  19       *x1 = *x2 = - c /b;
  20       return 0;
  21     }
  22   }
  23 
  24   del= sqrt( del );
  25   *x1 = ( -b - del ) / 2 / a;
  26   *x2 = ( -b + del ) / 2 / a;
  27   return 0;
  28 }

Przykład - program po obskuracji (działa tak samo ;-):

   1 #include <math.h>
   2 double va0(double v0,double v1,double v2){return v1*v1-4*v0*v2;}
   3 int va1(double v3,double v4,double v5,double *v6,double *v7){double 
   4 v8=va0(v3,v4,v5);if(v8<0)return 1;if(v3==0){if(v4==0)return 1;else{
   5 *v6=*v7=-v5/v4;return 0;}}v8=sqrt(v8);*v6=(-v4-v8)/2/v3;*v7=(-v4+
   6 v8)/2/v3;return 0;}

Wskazówki:


2015-09-23 06:43