目前分類:程式設計 (24)

瀏覽方式: 標題列表 簡短摘要
//---------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define MAX_VALUES 6000

#include <vcl.h>
#pragma hdrstop
////////////////////////使用前 必須對srand(讓其對時間有變化)
///////////////////////n不能等於1

float rand_normal1(void);
void rand_normal2(float* n1, float* n2);

//---------------------------------------------------------------------------
/*
Normal.c-Standard Normal Random Numbers
This program generates random numbers from a standard
normal distribution using a) the central limit theorem,
and b) the Box-Muller algorithm.
*/

#pragma argsused
int main(int argc, char* argv[])
{
        float x[MAX_VALUES];    //array containing random nubers

pipii 發表在 痞客邦 留言(0) 人氣()

鑑於有人問到在 C 語言中 float 和 double 型態的儲存格式的問題, 所以我就在  這邊獻醜一翻, 講講我所了解的部份, 如有任何錯誤, 請各位大哥多多指教...

  IEEE 制定之浮點數格式說明:

   float 型態: 用 4 個 bytes 儲存, 也就是 32 bits.
               各個 bit 的用途如下:

          bit      31      23~30        0~22
               ┌───┬────┬───────┐
               │正負號│  指數  │     底數     │
               └───┴────┴───────┘

   double 型態: 用 8 個 bytes 儲存, 也就是 64 bits.
                各個 bit 的用途如下:

          bit      63      52~62        0~51
               ┌───┬────┬───────┐
               │正負號│  指數  │     底數     │
               └───┴────┴───────┘

 < 說明 >   正負號 (sign): 1 為負, 0 為正.

指數 (exponential): 將底數乘上 2 的指數次方後就是原來的數. 須注意的是: float 時, 因有 8 bits, 所以能表示的有 2 的 256 次方, 但因為指數應可正可負, 所以 IEEE 規定, 此處算
出的次方須減去 127 才是真的指數,所以 float 的指數可從
-126 到 128.同理, double 型態有 11 bits, 算出的值須減去 1023, 所以double 的指數可從 -1022 到 1024.
底數 (mantissa): 此部份格式實在難以用文字說明,請參考下面的例子.

pipii 發表在 痞客邦 留言(0) 人氣()

對於BCB的動態函式庫DLL以及靜態函式庫LIB說一個解說。
1.動態函式庫DLL 使用New裏的DLL WIZARD, 然後bcb會自動幫你建好入口。然後如果你要靜態呼叫DLL就是使用__declspec(dllexport)直接呼叫該函式就可。另外動態呼叫DLL的方式有兩種。第一種為將bCb的project裏的advanced Liker裏的delay load加入dll即可動態呼叫。(沒試過) 第二種則是利用windows的api來呼叫DLL,如LoadLibrary以及GetProcAddress來進行呼叫。 P.S.1 不能按F9執行,要用MAKE或是BUILDE才能建立DLL檔。(如果PROJECT裏的Generate Import Libary的打勾,也會自動產生LIB檔) P.S.2 或是利用bcb內部所附的Implib產生lib檔。(這個Implib主要是拿來產生其他程式做出的DLL變成LIB,如vc所製作出的DLL)

2.靜態函式庫LIB 使用New裏的Lib,然後bcb會自動幫你建好,然後還需要再外加一個.h以及.cpp .h為函式宣告處.cpp為寫實作的地方,這樣就可以做好靜態函式庫,再加入你的Project就可以了。

pipii 發表在 痞客邦 留言(0) 人氣()

撰寫BCB的MultiTier的程式
1.首先使用ODBC去弄一個資料庫別名,並選擇你要讀取資料庫。
2.選擇BCB的File->New->Other裏的Multitier的頁籤裏的Remote Data Module。
3.選擇元件裏的DataSetProvider搭配Table或是Query,將程式做成Server執行檔。
4.接下來必須在Server端的Windows灌Bcb,這樣才會有BDE(BCB灌了才有的功能,不然在連接時會不知什麼是BDE)(BDE Administrator)
5.將Server端的程式執行以及BCB內部所附的SCKTSRVR執行起來,就完成Server端的工作。
6.接下來撰寫客戶端Client端的程式。
7.先放置一個SocketConnect(放置DComConnection在連接時會有問題,暫時無法解決)
8.設定它的位置屬性為Ip或是網芳名字,並選擇ServerName,名字會自動出現,選擇你想要的名字[如果Server正常啟動])
9.放置ClientDataSet元件至Form上,並選擇RemoteServer為你的SocketConnect,再將Active設為true就 連接到資料庫了,可以開始撰寫程式,如倉儲管理系統。
10.完成程式後,要將程式執行檔以及bcb內附的midas.dll放在一起,就可以使用了。 以上的東西,Server以Windows2003,Client以Windows XP執行可以。 若是將Server改成WindowsXP,Client也是WindowsXP,結果發現執行會失敗。 (不知是不是權限問題,暫時無法解決)

pipii 發表在 痞客邦 留言(0) 人氣()

«12