метасимволы

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем ProgramerSS, 6 окт 2010.

  1. ProgramerSS

    ProgramerSS Гость

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

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

    Метасимвол - (цифра). Содержание метасимволы - цепочка одинаковых символов заданной длины должен присутствовать в слове в нужной позиции. Длина цепочки должна быть не менее заданной (цифра). Сформировать новый текст, заменив в найденных словах цепочки искомых символов на один соответствующий символ.
    [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++]
     
  2. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.469
    Симпатии:
    27
    шибка в 21 строке и мы телепаты, сразу догадавшиеся, о тексте и строке ошибки
     
  3. ProgramerSS

    ProgramerSS Гость

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

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.469
    Симпатии:
    27
    ысправте
     

Поделиться этой страницей