Nadesłany przez Tomasz Lubiński, 31 lipca 2007 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.Pobierz pełne rozwiązanie.
Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
Kody Kreskowe - C++/Unit1.cpp:
//--------------------------------------------------------------------------- // Generowanie kodow Pharmacode two-track // www.algorytm.org // (c)2007 Tomasz Lubinski //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; int curentPos; // reurns 1 if txt is correct, 0 otherwise int check(char *txt) { int number; number = atoi(txt); if ((number < 4) || (number > 64570080)) { return 0; } return 1; } void drawSignBar(char bar) { int top = 0; int down = 0; Form1->Image1->Canvas->Brush->Color = clBlack; if (bar == 'A') /* above */ { top = 10; down = 34; } else if (bar == 'B') /* below */ { top = 34; down = 58; } else /* normal */ { top = 10; down = 58; } Form1->Image1->Canvas->Rectangle(curentPos + 20, top, curentPos + 26, down); curentPos -= 12; } void drawBars(char *txt) { int number; curentPos = 300; Form1->Image1->Canvas->Brush->Color = clWhite; Form1->Image1->Canvas->Rectangle(0, 0, 337, 89); number = atoi(txt); while (number != 0) { if ((number % 3) == 0) { drawSignBar('N'); /* normal */ number = (number-3)/3; } else if ((number % 3) == 2) { drawSignBar('A'); /* above */ number = (number-2)/3; } else { drawSignBar('B'); /* below */ number = (number-1)/3; } } } //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if (check(Kod->Text.c_str()) == 0) { ShowMessage("Incorrect text"); return; } drawBars(Kod->Text.c_str()); } //---------------------------------------------------------------------------