Скачиваний:
10
Добавлен:
01.05.2014
Размер:
3.24 Кб
Скачать
//=== „Ґ¬®­бва жЁ®­­ п Їа®Ја ¬¬ : ®ЇҐа жЁЁ ­ ¤ ¬­®¦Ґбвў ¬Ё ===
#include  <stdio.h>
#include  <conio.h>
#include  <stdlib.h>
#include  <string.h>

struct EL { int d;
	     EL * next;
	  };

void main()
{ int i, j, f, nA, nB, nC,
      wA, wB, wC,		//Џ ¬пвм ¤«п ¬ иЁ­­ле б«®ў
      bA[] = {0,0,0,0,0, 0,0,0,0,0},
      bB[] = {0,0,0,0,0, 0,0,0,0,0},
      bC[10];   		//Џ ¬пвм ¤«п ¬ ббЁў®ў ЎЁв®ў
  EL * La, * Lb, * Lc, *e, *u, *v; 	//“Є § вҐ«Ё ­  бЇЁбЄЁ Ё ваЁ а Ў®зЁе гЄ § вҐ«п
  char A[20], B[20], C[20];     //Џ ¬пвм Ї®¤ ¬ ббЁўл н«Ґ¬Ґ­в®ў (бЁ¬ў®«л)

  printf("\nЋЇҐа жЁЁ ­ ¤ ¬­®¦Ґбвў ¬Ё ===== (C)lgn, 17.01.04");

  printf("\n ‚ўҐ¤ЁвҐ ¬­®¦Ґбвў ...\n");
  printf( "A=");   gets(A);   nA = strlen(A);
  printf( "B=");   gets(B);   nB = strlen(B);

/*
//‚ аЁ ­в: ЈҐ­Ґа жЁп Ёб室­ле ¤ ­­ле
  randomize();
  wA = random(1024);
  wB = random(1024);
//ЏаҐ®Ў® §®ў ­ЁҐ ў ¬ ббЁўл...
  for(nA=i=0; i<10; i++)
    if(wA & (1<<i)) A[nA++] = i+'0';
  for(nB=i=0; i<10; i++)
    if(wB & (1<<i)) B[nA++] = i+'0';

*/

//ЏаҐ®Ўа §®ў ­ЁҐ ў бЇЁб®Є
  La = NULL;
  for(i=0; i<nA; i++)
  { e = new EL;
    e->d = A[i];
    e->next = La;
    La = e;
  }
  Lb = NULL;
  for(i=0; i<nB; i++)
  { e = new EL;
    e->d = B[i];
    e->next = Lb;
    Lb = e;
  }

//ЏаҐ®Ўа §®ў ­ЁҐ ў ¬ ббЁў ЎЁв®ў Ё ¬ иЁ­­®Ґ б«®ў®
  for(wA=i=0; i<nA; i++)
  { bA[A[i]-'0'] = 1;
    wA |= (1<<(A[i]-'0'));
  }
  for(wB=i=0; i<nB; i++)
  { bB[B[i]-'0'] = 1;
    wB |= (1<<(B[i]-'0'));
  }

//ЋЇҐа жЁп б ¬ ббЁў ¬Ё: ®ЎкҐ¤Ё­Ґ­ЁҐ
  for(i=0; i<nA; i++) C[i] = A[i];
  nC = nA;
  for(j=0; j<nB; j++)
  { f=1;
    for(i=0; i<nA; i++)
      if(A[i] == B[j]) f=0;
    if(f) C[nC++] = B[j];
  }
  C[nC] = '\0'; //ЋЈа ­ЁзЁвҐ«м бва®ЄЁ

//ЋЇҐа жЁп ­ ¤ бЇЁбЄ ¬Ё: ЇҐаҐбҐзҐ­ЁҐ
  Lc = NULL;
  for(u=La; u; u=u->next)
  { f=0;
    for(v=Lb; v; v=v->next)
      if(u->d == v->d) f=1;
    if(f) { e = new EL;
	    e->d = u->d;
	    e->next = Lc;
	    Lc = e;
	  }
  }

//ЋЇҐа жЁп ­ ¤ ¬ ббЁў ¬Ё ЎЁв®ў: а §­®бвм ¬­®¦Ґбвў (A\B)
  for(i=0; i<10; i++)
    bC[i] = bA[i] && !bB[i];
//’® ¦Ґ - ¤«п ¬ иЁ­­ле б«®ў (B\A)
  wC = wB & ~wA;

  printf("\n‚ўҐ¤Ґ­л ¬­®¦Ґбвў : A=%s"
	 "\n                   B=%s", A, B);
//	 puts(A); puts(B);
  printf("\n ЋЎкҐ¤Ё­Ґ­ЁҐ:      C=%s", C);

  printf("\n\n                   A=");
  for(u=La; u; u=u->next)  printf("%c", u->d);
  printf("\n                   B=");
  for(u=Lb; u; u=u->next)  printf("%c", u->d);
  printf("\n ЏҐаҐбҐзҐ­ЁҐ:     Lc=");
  for(u=Lc; u; u=u->next)  printf("%c", u->d);

  printf("\n\n                  bA=");
  for(i=0; i<10; i++)
   { if(bA[i]) printf("%c", i+'0');
     else printf("-");
   }
  printf("\n                  bB=");
  for(i=0; i<10; i++)
   { if(bB[i]) printf("%c", i+'0');
     else printf("-");
   }
  printf("\n ђ §­®бвм:        bC=");
  for(i=0; i<10; i++)
   { if(bC[i]) printf("%c", i+'0');
     else printf("-");
   }

  printf("\n\n                  wC=");
  for(i=0; i<10; i++)
   { if(wC&(1<<i)) printf("%c", i+'0');
     else printf("-");
   }
  printf("\n(0x%03X)=(0x%03X)\\(0x%03X)", wC, wB, wA);
  printf("\nB=%10o\nA=%10o\nC=%10o", wB, wA, wC);

  printf("\n ===== Љ®­Ґж =====\n"); getch();
}
Соседние файлы в папке Демонстрационные примеры к курсовой по СиАОД