algorytm.org

Implementacja w C/C++



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Pharmacode two-track - Implementacja w C/C++
Ocena użytkownikóww: *****  / 1
SłabyŚwietny
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());
}
//---------------------------------------------------------------------------
Dodaj komentarz