Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
М_Н_СТЕРСТВО ОСВ_ТИ _ НАУКИ УКРАЇНИ.docx
Скачиваний:
1
Добавлен:
27.08.2019
Размер:
242 Кб
Скачать
☆

Додаток а. Лістинг програми

//---------------------------------------------------------------------------

#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:

}

//---------------------------------------------------------------------------