Додаток а. Лістинг програми
//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdio.h>
#include <iostream.h>
#include <fstream.h>
#include <math.h>
#include <stack>
#include <cstdlib>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma resource "*.dfm"
TForm1 *Form1;
char ss[100];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N4Click(TObject *Sender)
{
exit(0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N13Click(TObject *Sender)
{
ShowMessage("Разработчик: Кривцун А.А.");
}
//---------------------------------------------------------------------------
void insert_symbol(TButton *Button)
{
Form1->Memo1->SetFocus();
Form1->Memo1->SelText=Button->Caption;
Form1->Memo1->SelStart=Form1->Memo1->SelStart-strlen(Button->Caption.c_str());
Form1->Memo1->SelLength=strlen(Button->Caption.c_str());
Form1->Memo1->SelStart=Form1->Memo1->SelStart+strlen(Button->Caption.c_str());
}
void __fastcall TForm1::Button4Click(TObject *Sender)
{
insert_symbol(Button4);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
insert_symbol(Button5);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
insert_symbol(Button6);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button10Click(TObject *Sender)
{
insert_symbol(Button10);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button9Click(TObject *Sender)
{
insert_symbol(Button9);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
insert_symbol(Button3);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button12Click(TObject *Sender)
{
insert_symbol(Button12);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)
{
insert_symbol(Button7);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button8Click(TObject *Sender)
{
insert_symbol(Button8);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
insert_symbol(Button2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)
{
if (OpenDialog1->Execute())
{
ifstream in(OpenDialog1->FileName.c_str()); //открываем поток для чтения строк
char ch[255]; //буфер чтения
while(!in.eof())
{
in.getline(ch,255); //читаем cтроку
if (ch!="") break;
}
in.close(); //закрываем поток
Memo1->Text=ch;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N3Click(TObject *Sender)
{
if (SaveDialog1->Execute())
{
ofstream out(SaveDialog1->FileName.c_str()); //открываем поток для записи строк
out<<Memo1->Text.c_str(); //запись в поток
out.close(); //закрываем поток
}
}
//---------------------------------------------------------------------------
int is_symbol(char s)
{
if (((s>='a') && (s<='z')) || ((s>='A') && (s<='Z')) || ((s>='0') && (s<='1')))
{
return 1;
}
else
{
return 0;
}
}
//изменяет значение глобальной переменной ss и выдает результ 0 или 1
int skleika(char s1[100],char s2[100])
{
int i,j,z,zz;
char sss[100];
char ssss[100];
Form1->Memo1->Lines->Clear();
sss[0]='\0';
strcat(sss,s1);
strcat(sss,"=");
strcat(sss,s2);
Form1->Memo1->Lines->Add(sss);
i=0;
while (i<=strlen(s1)-1)
{
if (is_symbol(s1[i]))
{
for (j=0;j<=strlen(s2)-1;j++)
{
if (s2[j]==s1[i])
{
if (((s2[j-1]=='Ш') && (s1[i-1]!='Ш')) || ((s1[i-1]=='Ш') && (s2[j-1]!='Ш')))
{
sss[0]='\0';
z=0;
while (z<=strlen(s1)-1)
{
strcat(sss," ");
sss[strlen(sss)-1]=s1[z];
if (z==i)
{
ssss[0]='\0';
strncat(ssss,sss,strlen(sss)-1);
sss[0]='\0';
strcat(sss,ssss);
if (s1[z-1]=='Ш')
{
ssss[0]='\0';
strncat(ssss,sss,strlen(sss)-1);
sss[0]='\0';
strcat(sss,ssss);
}
z++;
}
z++;
}
z=0;
while (z<=strlen(s2)-1)
{
strcat(sss," ");
sss[strlen(sss)-1]=s2[z];
if (z==j)
{
ssss[0]='\0';
strncat(ssss,sss,strlen(sss)-1);
sss[0]='\0';
strcat(sss,ssss);
if (s2[z-1]=='Ш')
{
ssss[0]='\0';
strncat(ssss,sss,strlen(sss)-1);
sss[0]='\0';
strcat(sss,ssss);
}
z++;
}
z++;
}
if (sss[0]=='\0')
{
ss[0]='\0';
strcat(ss,"0");
return 100;
}
if (sss[0]=='Ъ')
{
ssss[0]='\0';
for (zz=2;zz<=strlen(sss)-1;zz++)
{
strcat(ssss," ");
ssss[strlen(ssss)-1]=sss[zz];
}
sss[0]='\0';
strcat(sss,ssss);
}
if (sss[strlen(sss)-1]=='Ъ')
{
ssss[0]='\0';
strncat(ssss,sss,strlen(sss)-1);
sss[0]='\0';
strcat(sss,ssss);
}
z=0;
while (z<=strlen(sss)-1)
{
if (((is_symbol(sss[z])) && (is_symbol(sss[z+1]))) || ((is_symbol(sss[z])) && (sss[z+1]=='Ш')))
{
ssss[0]='\0';
for (zz=0;zz<=z;zz++)
{
strcat(ssss," ");
ssss[strlen(ssss)-1]=sss[zz];
}
strcat(ssss,"Ъ");
for (zz=z+1;zz<=strlen(sss)-z;zz++)
{
strcat(ssss," ");
ssss[strlen(ssss)-1]=sss[zz];
}
sss[0]='\0';
strcat(sss,ssss);
}
if (sss[z]==sss[z+2])
{
ssss[0]='\0';
for (zz=z;zz<=strlen(sss)-3;zz++)
{
strcat(ssss," ");
ssss[strlen(ssss)-1]=sss[zz];
}
sss[0]='\0';
strcat(sss,ssss);
}
z++;
}
ss[0]='\0';
strcat(ss,sss);
return 1;
}
}
}
}
i++;
}
return 0;
}
void __fastcall TForm1::N16Click(TObject *Sender)
{
char s[100],sss[100];
int i,j,z;
char mas[100][100];
int num_mas;
char memory[100];
int min_index,max_index;
int buffer;
int iter;
s[0]='\0';
j=0;
for (i=1;i<=strlen(Memo1->Text.c_str())-2;i++)
{
if (Memo1->Text[i]!=' ')
{
strcat(s," ");
s[j]=Memo1->Text[i];
j++;
}
}
num_mas=0;
memory[0]='\0';
strcat(memory,Memo1->Text.c_str());
strcat(s,",");
i=1;
while (s[0]!='\0')
{
if (s[i]==',')
{
num_mas++;
mas[num_mas][0]='\0';
strncat(mas[num_mas],s,i);
ss[0]='\0';
for (z=i+1;z<=strlen(s)-1;z++)
{
strcat(ss," ");
ss[strlen(ss)-1]=s[z];
}
s[0]='\0';
strcat(s,ss);
i=1;
}
else {i++; }
}
Memo3->Clear();
for (i=1;i<=num_mas;i++)
{
ss[0]='\0';
snprintf(ss,254,"%d",i);
strcat(ss,". ");
strcat(ss,mas[i]);
Memo3->Lines->Add(ss);
}
min_index=1;
max_index=num_mas;
iter=0;
while (true)
{
iter++;
if (iter>CSpinEdit1->Value)
{
Label2->Caption="Превышен предел итераций";
Memo1->Lines->Clear();
Memo1->Text=memory;
goto ext;
}
for (i=min_index;i<=max_index-1;i++)
{
for (j=i+1;j<=max_index;j++)
{
//при вызове функции изменяется значение глобальной переменной ss
buffer=skleika(mas[i],mas[j]);
if (buffer==0) continue;
num_mas++;
mas[num_mas][0]='\0';
strcat(mas[num_mas],ss);
ss[0]='\0';
snprintf(ss,254,"%d",num_mas);
strcat(ss,". ");
strcat(ss,mas[num_mas]);
strcat(ss," (");
snprintf(sss,254,"%d",i);
strcat(ss,sss);
strcat(ss,",");
snprintf(sss,254,"%d",j);
strcat(ss,sss);
strcat(ss,")");
Memo3->Lines->Add(ss);
if (buffer==100)
{
Label2->Caption="Доказано";
Memo1->Lines->Clear();
Memo1->Text=memory;
goto ext;
}
}
}
min_index=max_index+1;
max_index=num_mas;
for (i=1;i<=min_index-1;i++)
{
for (j=min_index;j<=max_index;j++)
{
//при вызове функции изменяется значение глобальной переменной ss
buffer=skleika(mas[i],mas[j]);
if (buffer==0) continue;
num_mas++;
mas[num_mas][0]='\0';
strcat(mas[num_mas],ss);
ss[0]='\0';
snprintf(ss,254,"%d",num_mas);
strcat(ss,". ");
strcat(ss,mas[num_mas]);
strcat(ss," (");
snprintf(sss,254,"%d",i);
strcat(ss,sss);
strcat(ss,",");
snprintf(sss,254,"%d",j);
strcat(ss,sss);
strcat(ss,")");
Memo3->Lines->Add(ss);
if (buffer==100)
{
Label2->Caption="Доказано";
Memo1->Lines->Clear();
Memo1->Text=memory;
goto ext;
}
}
}
min_index=min_index;
max_index=max_index;
}
ext:
}
//---------------------------------------------------------------------------
