Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / 2002 / MAGAZIN

.CPP
Скачиваний:
11
Добавлен:
17.04.2013
Размер:
8.2 Кб
Скачать
/* ------------------------------------------
   Џа®Ј  ’Ё¬®дҐҐў , Їа®бмЎ  Ї® ўбҐ¬ ў®Їа®б ¬ ® Ў Ј е
   ®Ўа й вмбп Є а §а Ў®взЁЄг  ђ §Ў®а Є®­бв ­вл б++
   ђ §Ў®а Є®­бв ­вл п§лЄ  ‘++
   ------------------------------------------  */
  #include <iostream.h>
  #include <string.h>
  char lenta[120];         // ива®Є 
  char *pread = &lenta[0]; // “Є § вҐ«м ­  ⥪гйЁ© бЁ¬ў®«
  char stek[120];          // ¬ Ј §Ё­ (3-Ё©)
  char *pstek;
  char priz[120], *ppriz;  // ¬ Ј §Ё­ ЇаЁа Є®ў
  int errkod;              // Є®¤ ®иЁЎЄЁ (  ®­® ­ ¬ ­ ¤®)
/* ------------ Џа ўлҐ з бвЁ Їа ўЁ« (вгв ¬л алЎг §  ў®а зЁў «Ё) ------------*/
  // ўл१ ­® 業§га®© (ўлиҐбв®пй п 業§га  ўҐа­г«   0- Їгбв®© бЁ¬ў®«)
  // 1- вҐа¬Ё­ «, 2-  ­вЁЇ®¤ вҐа¬Ё­ «  , 3-  Ў§ ж
//////Џа ўЁ«  ­  ЎгЄўг S , е®вп Ё ­ҐжҐ­§га­лҐ
  char s0[]  = "123 .D";
  char s1[] = "13 0";
  char s2[] = "13 1";
  char s3[] = "13 2";
  char s4[] = "13 3";
  char s5[] = "13 4";
  char s6[] = "13 5";
  char s7[] = "13 6";
  char s8[] = "13 7";
  char s9[] = "13 8";
  char s10[] = "13 9";
  char s11[] = "123 0E";
  char s12[] = "123 1E";
  char s13[] = "123 2E";
  char s14[] = "123 3E";
  char s15[] = "123 4E";
  char s16[] = "123 5E";
  char s17[] = "123 6E";
  char s18[] = "123 7E";
  char s19[] = "123 8E";
  char s20[] = "123 9E";
  char s21[] = "123 'H";
  char s22[] = "123 \"A";
  char s23[] = "13 .";

//////Џа ўЁ«  ­  ЎгЄўг D
  char d0[] = "13 0";
  char d1[] = "13 1";
  char d2[] = "13 2";
  char d3[] = "13 3";
  char d4[] = "13 4";
  char d5[] = "13 5";
  char d6[] = "13 6";
  char d7[] = "13 7";
  char d8[] = "13 8";
  char d9[] = "13 9";
  char d10[] = "123 0D";
  char d11[] = "123 1D";
  char d12[] = "123 2D";
  char d13[] = "123 3D";
  char d14[] = "123 4D";
  char d15[] = "123 5D";
  char d16[] = "123 6D";
  char d17[] = "123 7D";
  char d18[] = "123 8D";
  char d19[] = "123 9D";

//////Џа ўЁ«  ­  ЎгЄўг E
  char e0[] = "13 0";
  char e1[] = "13 1";
  char e2[] = "13 2";
  char e3[] = "13 3";
  char e4[] = "13 4";
  char e5[] = "13 5";
  char e6[] = "13 6";
  char e7[] = "13 7";
  char e8[] = "13 8";
  char e9[] = "13 9";
  char e10[] = "123 0E";
  char e11[] = "123 1E";
  char e12[] = "123 2E";
  char e13[] = "123 3E";
  char e14[] = "123 4E";
  char e15[] = "123 5E";
  char e16[] = "123 6E";
  char e17[] = "123 7E";
  char e18[] = "123 8E";
  char e19[] = "123 9E";
  char e20[] = "123 .D";
  char e21[] = "13 .";

//////Џа ўЁ«  ­  ЎгЄўг A, Ј®а §¤® е㦥 (Ё ¬­Ґ ⮦Ґ!!!)
  char a0[] = "123 aA";
  char a1[] = "123 bA";
  char a2[] = "123 cA";
  char a3[] = "123 dA";
  char a4[] = "123 eA";
  char a5[] = "123 fA";   // •ў вЁв !!!! Ѓ®«миҐ ЎгЄ®ў®Є ­Ґ §­ о!!
  char a6[] = "13  \"";

//////Џа ўЁ«  ­  ЎгЄўг H
  char h0[] = "123 aN";
  char h1[] = "123 bN";
  char h2[] = "123 cN";
  char h3[] = "123 dN";
  char h4[] = "123 eN";
  char h5[] = "123 fN";   //Ђ ў ћ­ЁЄбҐ п Ў § Ї аЁ«бп!

//////Џа ўЁ«  ­  ЎгЄўг N
  char n0[] = "123 aM";
  char n1[] = "123 bM";
  char n2[] = "123 cM";
  char n3[] = "123 dM";
  char n4[] = "123 eM";
  char n5[] = "123 fM";   //…йҐ 300 бҐаЁ© Ё п  ‘ ­в -Ѓ аЎ а 
  char n6[] = "13  '";

/// Џа ўЁ«® ¤«п  M
  char m[] = "13  '";

  struct prod            // €­д®а¬ жЁп ® Їа ўЁ« е
  {
    int m;       	 // —Ёб«® Їа ўЁ« ¤«п ®¤­®Ј® ­ҐвҐа¬Ё­ « 
    char *pr[24];	 // “Є § вҐ«м ­  Їа ўго з бвм ЇҐаў®Ј® Їа ўЁ« 
			 // ¤«п ¤ ­­®Ј® ­ҐЁҐа¬Ё­ « 
  } S,D,E,A,H,N,M;

void sntx()
{
/* ------- Џа ўЁ«® S ....  ---------------------*/
  S.m = 24;
  S.pr[0] = s0;
  S.pr[1] = s1;
  S.pr[2] = s2;
  S.pr[3] = s3;
  S.pr[4] = s4;
  S.pr[5] = s5;
  S.pr[6] = s6;
  S.pr[7] = s7;
  S.pr[8] = s8;
  S.pr[9] = s9;
  S.pr[10] = s10;
  S.pr[11] = s11;
  S.pr[12] = s12;
  S.pr[13] = s13;
  S.pr[14] = s14;
  S.pr[15] = s15;
  S.pr[16] = s16;
  S.pr[17] = s17;
  S.pr[18] = s18;
  S.pr[19] = s19;
  S.pr[20] = s20;
  S.pr[21] = s21;
  S.pr[22] = s22;
  S.pr[23] = s23;
/* ------- Џа ўЁ«® D ....  ---------------------*/
  D.m = 20;
  D.pr[0] = d0;
  D.pr[1] = d1;
  D.pr[2] = d2;
  D.pr[3] = d3;
  D.pr[4] = d4;
  D.pr[5] = d5;
  D.pr[6] = d6;
  D.pr[7] = d7;
  D.pr[8] = d8;
  D.pr[9] = d9;
  D.pr[10] = d10;
  D.pr[11] = d11;
  D.pr[12] = d12;
  D.pr[13] = d13;
  D.pr[14] = d14;
  D.pr[15] = d15;
  D.pr[16] = d16;
  D.pr[17] = d17;
  D.pr[18] = d18;
  D.pr[19] = d19;

/* ------- Џа ўЁ«® E ....  ---------------------*/
  E.m = 22;
  E.pr[0] = e0;
  E.pr[1] = e1;
  E.pr[2] = e2;
  E.pr[3] = e3;
  E.pr[4] = e4;
  E.pr[5] = e5;
  E.pr[6] = e6;
  E.pr[7] = e7;
  E.pr[8] = e8;
  E.pr[9] = e9;
  E.pr[10] = e10;
  E.pr[11] = e11;
  E.pr[12] = e12;
  E.pr[13] = e13;
  E.pr[14] = e14;
  E.pr[15] = e15;
  E.pr[16] = e16;
  E.pr[17] = e17;
  E.pr[18] = e18;
  E.pr[19] = e19;
  E.pr[20] = e20;
  E.pr[21] = e21;
/* ------- Џа ўЁ«® A ....  ---------------------*/
  A.m = 7;
  A.pr[0] = a0;
  A.pr[1] = a1;
  A.pr[2] = a2;
  A.pr[3] = a3;
  A.pr[4] = a4;
  A.pr[5] = a5;
  A.pr[6] = a6;
/* ------ Џа ўЁ«® H ....  ---------------------*/
  H.m = 6;
  H.pr[0] = h0;
  H.pr[1] = h1;
  H.pr[2] = h2;
  H.pr[3] = h3;
  H.pr[4] = h4;
  H.pr[5] = h5;
/* ------- Џа ўЁ«® N ....  ---------------------*/
  N.m = 7;
  N.pr[0] = n0;
  N.pr[1] = n1;
  N.pr[2] = n2;
  N.pr[3] = n3;
  N.pr[4] = n4;
  N.pr[5] = n5;
  N.pr[6] = n6;
/* ------- Џа ўЁ«® M ....  ---------------------*/
  M.m = 1;
  M.pr[0] = m;

}
/* Џ®ЁбЄ Їа ў®© з бвЁ Їа ўЁ« ¤«п ­ҐвҐа¬Ё­ « */
prod *nprod(char *ps)
{
  switch (*ps) {
    case 'S': return &S;
    case 'D': return &D;
    case 'E': return &E;
    case 'A': return &A;
    case 'H': return &H;
    case 'N': return &N;
    case 'M': return &M;
  default: cout << "error=1 \n";
  }
 return 0;
}
/*-------- Џа®Ја ¬¬  а §Ў®а  Ї®«Ґв  ¬лб«Ё ’Ё¬®дҐҐў  ------------------- */
void razbor()
{
  prod *pprod;
  int i,j;
  errkod = 0;         	// Є®¤ ®иЁЎЄЁ ў „ЌЉ ’Ё¬®дҐҐў 
  pread = &lenta[0];
  pstek = &stek[108];
  ppriz = &priz[108];
  char *psimvol;
  stek[109] = 'K';      // Ќ  ¤­Ґ (ѓЋѓЋ‹њ)
  stek[108] = 'S';      // ‘ 祣® ­ зЁ­ Ґвбп ђ®¤Ё­ 
  priz[108] = '2';      // ЏаЁ§а Є ­ҐвҐа¬Ё­ « 
  while (((*pstek) != 'K') && (errkod ==0)) {
    switch (*ppriz) {
      case '1': // ў б⥪Ґ вҐа¬Ё­ « (Ё 祣® ®­ в ¬ ¤Ґ« Ґв?)
	 if ((*pstek) == (*pread))  //¤®ЇгбЄ бЁ¬ў®«  (ў ­ иҐ© ॠ«Ё§ жЁЁ ­Ґ а Ў®в Ґв)
	 {
	    ppriz++;
	    pstek++;
	    pread++;
	 } else errkod = 1; break;
      case '2': // ў б⥪Ґ ­ҐвҐа¬Ё­ «
	  pprod = nprod(pstek);
	  i = 0;    // в Є®Ґ ­Ґ ўЇЁблў Ґвбп ў ­ иЁ Їа ўЁ« 
	  for (j=1; j <= (*pprod).m; j++) {
	     psimvol = (*pprod).pr[j-1];
	     switch (*psimvol) {
		case '1':  // ЇҐаўл© бЁ¬ў®« Їа ўЁ«  вҐа¬Ё­ «
		  if ((*(psimvol+4)) != (*pread))
		    break;
		  else
		     { i = j; j = (*pprod).m; break;};
		case '2': case '0':
		  i = j; j = (*pprod).m; break;
		default:
		cout << "error=2 \n";
	     }
	  }
	  if (i == 0) { errkod = 2; break;}
	  else;
	  psimvol = (*pprod).pr[i-1];
	  ppriz++;  // г¤ «Ґ­ЁҐ ­ҐвҐа¬Ё­ «  Ё§ б⥪ 
	  pstek++;
	  if ((*psimvol) != '0') { // § ¬Ґ­  ­ҐвҐа¬Ё­ « 
	     while ((*psimvol) != '3')
	       psimvol++;
	     psimvol--;
	     while (psimvol >= (*pprod).pr[i-1]) {
	       ppriz--;
	       pstek--;
	       (*ppriz) = (*psimvol);
	       (*pstek) = (*(psimvol+4));
	       psimvol--;
	     }
	  } else;
	  break;
      default: { cout << "error = 3 \n"; errkod = 3;};
    }
  }
}
/* -------------- ѓ«оЄ § ЇгбЄ Ґвбп вгвя ---------------*/
void main()
{
   int n,j;
   char *pp = &lenta[0];
   sntx();
   for (n=1; n<8; n++)
   {
     cout << "\n";
     cin >> lenta;
     pread = &lenta[0];
     pp = pread;
     razbor();
     cout << " \n Џа ўЁ«м­ п з бвм ЇаҐ¤«®¦Ґ­Ёпя -> ";
     while ( pp < pread )
     {
       cout << (*pp);
       pp++;
     }
     *pread--;
     if (*pread!='\0') *pread++;
     if ((*pread) != '\0')
	{ cout << " \n ЏаҐ¤«®¦Ґ­ЁҐ Ё¬ҐҐв ®иЁЎЄг, ®иЁЎ®з­лҐ бЁ¬ў®«л -> ";
	  cout << pread;
	};
     if (errkod != 0)
	cout << " \n" << "ЋиЁЎЄ  ў Їа®Ја ¬¬Ґ = " << errkod << " \n";
   }
}


Соседние файлы в папке 2002