Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
/* ------------------------------------------
Џа®Ј ’Ё¬®дҐҐў , Їа®бмЎ Ї® ўбҐ¬ ў®Їа®б ¬ ® Ў Ј е
®Ўа й вмбп Є а §а Ў®взЁЄг ђ §Ў®а Є®бв вл б++
ђ §Ў®а Є®бв вл п§лЄ ‘++
------------------------------------------ */
#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";
}
}