Скачиваний:
27
Добавлен:
02.05.2014
Размер:
2.02 Кб
Скачать
#include <vcl.h>
#include <dir.h>
#include <stdio.h>
#pragma hdrstop
#include "Main.h"

#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmMain *frmMain;
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
    : TForm(Owner)
{
    InputFile = "";
    N = 9;

}

void TfrmMain::ShowBits(TMemo *Memo, int **bits, int len, int count)
{
    for (int i=0;i<=len;i++)
    {
        AnsiString temp="";
        for (int j=1;j<=count;j++)
        temp += IntToStr(bits[i][j]);
        Memo->Lines->Add(temp);
    }

}
int xor(int x, int y)
{
    if ((!x)&&(!y)) return 0;
    if ((!x)&&(y)) return 1;
    if ((x)&&(!y)) return 1;
    if ((x)&&(y)) return 0;
}
int CorrectChecking(int *word, int len, int bit)
{
    int sum = 0;
    for (int i=1;i<=len;i++)
    {
        sum = xor(sum,word[i]);
    }
    return xor(sum,bit);
}
int *GetErrors(int **words, int len, int count)
{
    int *ans;
    ans = new int [len+1];
    for (int i=0;i<=len;i++)
    ans[i] = CorrectChecking(words[i],count-1,words[i][count]);
    return ans;
}
void __fastcall TfrmMain::btnOpenClick(TObject *Sender)
{
    if ((OpenDialog->Execute())&&(FileExists(OpenDialog->FileName)))
    InputFile = OpenDialog->FileName;
    mmInput->Lines->LoadFromFile(InputFile);


    FILE *file;
    file = fopen(InputFile.c_str(),"r");

    Length = mmInput->Lines->Count;
    Length--;
    even = new int *[Length+1];

    errors = new int [Length+1];    

    char ch;
    for (int i=0;i<=Length;i++)
    {
        even[i] = new int [N+1];
        even[i][0] = 0;
        int j=0;
        do
        {
            fscanf(file,"%c",&ch);
            if (ch=='0') even[i][j] = 0;
            if (ch=='1') even[i][j] = 1;
            j++;
        }while ((ch!='\n')&&(!feof(file)));
    }
    errors = GetErrors(even,Length,9);

    for (int j=0;j<=Length;j++)
    mmResult->Lines->Add(errors[j]);
}
void __fastcall TfrmMain::btnCloseClick(TObject *Sender)
{
    Close();
}

Соседние файлы в папке Decoder