метасимволы

  • Автор темы ProgramerSS
  • Дата начала
P

ProgramerSS

#1
ВОт я зделал прогу, а она выбитвает ошибку, помогите пожалуйста...а то я не знаю что делать((((

Входной текст хранится в файле и состоит из слов, разделенных пробелами. Ввести с клавиатуры шаблон метасимволы (метасимвол задается в конкретном варианте). Во входном тексте найти слова (цепочки) по заданной маской. Сформировать исходный файл, превратив исходный текст определенным в конкретном варианте способом. Метасимволы в шаблоне могут повторяться, но они все для конкретного варианта одинтипичные.

Метасимвол - (цифра). Содержание метасимволы - цепочка одинаковых символов заданной длины должен присутствовать в слове в нужной позиции. Длина цепочки должна быть не менее заданной (цифра). Сформировать новый текст, заменив в найденных словах цепочки искомых символов на один соответствующий символ.
[c++]
//---------------------------------------------------------------------------

#include <vcl.h>
#include <conio.h>
#include <string.h>
#include <stdio.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
TOpenDialog *od = new TOpenDialog(this);
od->Filter = "Текстовые файлы|*.txt";
if (od->Execute()) {
Memo1->Lines->LoadFromFile(od->FileName);
}
delete od;
od = NULL;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
exit(0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{char S[80],S1[80];
int zn,l,k,kin,dow,flag,p,n,r,b,a,i,m,j;
strncpy(S, Memo1->Lines->Strings[0].c_str(), 80);
zn=0;
k=0;

if(i!=Edit1->Text.Length()-1){
if( (Edit1->Text=='{') && (Edit1->Text[i+2]=='}') )
{
if( (Edit1->Text[i+1]>='0') && (Edit1->Text[i+1]<='9') )
k++;
zn=zn+Edit1->Text[i+1]-48;
}
}


l=strlen(S)-3*k+zn;
i=0;
m=0;
while(i<Edit1->Text.Length())
if(S!=' ') kin=i;
else m++;
if(S==' ') {
dow=m;
p=kin-m;
if(dow==l){for(n=1;n<Edit1->Text.Length();n++)
{if (S[j+p]==Edit1->Text[n]) a++;
else if( (Edit1->Text=='{') && (Edit1->Text[i+2]=='}') )
{
if( (Edit1->Text[i+1]>='0') && (Edit1->Text[i+1]<='9') )
r=Edit1->Text[i+1]-48;
for(b=0;b<r;b++)
{ if (S[j+p]==S[j+p+b]) flag++;
if (flag==r) a=a+r;
if (a==m) strcpy(S[j+p],S[j+p+b]);
}
}
}
[/c++]
 

vital

Больной Компом Детектед
29.01.2006
2 432
33
#2
шибка в 21 строке и мы телепаты, сразу догадавшиеся, о тексте и строке ошибки
 
P

ProgramerSS

#3
Ошыбку выбивает в етогй строке:
C++:
if (a==m) strcpy(S[j+p],S[j+p+b]);