全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:764
推到 Plurk!
推到 Facebook!

讀方程式計算問題??

尚未結案
Vincent2424
一般會員


發表:57
回覆:40
積分:19
註冊:2004-12-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-27 23:09:32 IP:219.84.xxx.xxx 未訂閱
請問各位大大...我有3個方程式分別寫在三個.txt檔中 我想利用讀檔的方式,將方程式讀出計算,如下 code:
void __fastcall TForm1::Button1Click(TObject *Sender)
{      a=StrToFloat(Edit1->Text);
  b=StrToFloat(Edit2->Text);      Memo1->Clear();
  TStringList* st = new TStringList();
  st->LoadFromFile(String(ComboBox1->Text)+".txt");
  for (int i=0; i<1; i++)
  {
    Memo1->Lines->Add(st->Strings[i]);
  }
  delete st;      //Edit3->Text=c;    }     
三個.txt檔分別為 Formula1.txt Formula2.txt Formula3.txt 目前為止只會寫成如此,但僅能讀出方程式無法計算。 想做出當我輸入a、b值,即能讀出公式計算出c值,請問各位大大有辦法做到嗎?? 感謝...
daniel__lee
高階會員


發表:18
回覆:124
積分:113
註冊:2002-11-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-27 23:59:14 IP:218.167.xxx.xxx 未訂閱
方法很多種 這是蠻直接簡單的方法 你試試看是不是你要的    
//---------------------------------------------------------------------------    #include 
#pragma hdrstop    #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  Memo1->Clear();
  ComboBox1->Clear();
  ComboBox1->Items->Add("c=a*b");
  ComboBox1->Items->Add("c=a b");
  ComboBox1->Items->Add("c=a-b");
  ComboBox1->ItemIndex=0;    }
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
  Memo1->Clear();
  switch(ComboBox1->ItemIndex)
   {
     case 0:Memo1->Lines->Add("c=a*b");break;
     case 1:Memo1->Lines->Add("c=a b");break;
     case 2:Memo1->Lines->Add("c=a-b");break;
   }
}
//---------------------------------------------------------------------------    void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString st;      int a,b,c;
  st=Memo1->Lines->Strings[0];
  st=st.SubString(4,1);      a=StrToInt(Edit1->Text);
  b=StrToInt(Edit2->Text);      if(st=="*")     c=a*b;
  else if(st==" ")c=a b;
  else if(st=="-")c=a-b;
  Edit3->Text=c;
}
//---------------------------------------------------------------------------    
~ 勿在浮沙上面築高塔 ~
------
~ 勿在浮沙上面築高塔 ~
daniel__lee
高階會員


發表:18
回覆:124
積分:113
註冊:2002-11-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-28 00:01:53 IP:218.167.xxx.xxx 未訂閱
還有.h檔    
//---------------------------------------------------------------------------    #ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include 
#include 
#include 
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:        // IDE-managed Components
        TComboBox *ComboBox1;
        TMemo *Memo1;
        TEdit *Edit1;
        TEdit *Edit2;
        TButton *Button1;
        TEdit *Edit3;
        void __fastcall ComboBox1Change(TObject *Sender);
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall FormCreate(TObject *Sender);
private:        // User declarations
public:                // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif    
~ 勿在浮沙上面築高塔 ~
------
~ 勿在浮沙上面築高塔 ~
Vincent2424
一般會員


發表:57
回覆:40
積分:19
註冊:2004-12-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-28 10:05:37 IP:163.25.xxx.xxx 未訂閱
感謝daniel__lee 大大回答 因為我有"很多種"不同的方程式要做計算,而我不想把方程式放在程式code裡面,想要把不同的方程式存寫在不同的.txt檔中,再經由ComboBox1選擇不同的方程式讀出計算。 如: .txt檔名============>內容 Formula1.txt =======>c=a*b Formula2.txt =======>c=a b Formula3.txt =======>c=a-b Formula4.txt =======>c=a*b 2 Formula5.txt =======>c=a/3-b 由ComboBox1選擇不同的方程式讀出計算 可以做到??感謝大大...
windblown
中階會員


發表:0
回覆:117
積分:98
註冊:2003-11-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-28 14:21:30 IP:61.229.xxx.xxx 未訂閱
看看你能不能把他分析歸納成較小的範圍(ex: 一元多項式 C1* X ^ n1 C2*X^n2 ... C[n-1]*X C[n]),如果可以的話, 就可以縮小到一個範圍來處理 如果你的公式裡面有常數、變數、函數的話,那就幾乎等於寫一個 interpreter 用一個比喻來說明第二個情形 你寫程式 -〉 compiler 處理 -〉執行程式 對照 別人寫公式 -〉用你的程式處理 -〉產生執行結果 你可以參考「如何設計 compiler 」的書中,可以擷取你要的部份!!
daniel__lee
高階會員


發表:18
回覆:124
積分:113
註冊:2002-11-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-28 23:32:40 IP:218.169.xxx.xxx 未訂閱
因為我有"很多種"不同的方程式要做計算,而我不想把方程式放在程式code裡面,想要把不同的方程式存寫在不同的.txt檔中,再經由ComboBox1選擇不同的方程式讀出計算。 如:    .txt檔名============>內容    Formula1.txt =======>c=a*b Formula2.txt =======>c=a+b Formula3.txt =======>c=a-b Formula4.txt =======>c=a*b+2 Formula5.txt =======>c=a/3-b    由ComboBox1選擇不同的方程式讀出計算 可以做到??感謝大大... --------------------------------------------------- 當然可以啊!! 類似的方法在這個論壇中 很容易可以找到的 我直接把他寫在code裡是怕你直接把我po 上去的程式拿去compiler 會因為找不到檔案而發生錯誤...    你把改一下就好了啊 就這樣
  switch(ComboBox1->ItemIndex)
   {
     case 0:Memo1->Lines->LoadFromFile("xxx.txt"); break;
     case 1:Memo1->Lines->LoadFromFile("xxx.txt"); break;
     case 2:Memo1->Lines->LoadFromFile("xxx.txt"); break;
   }
~ 勿在浮沙上面築高塔 ~
------
~ 勿在浮沙上面築高塔 ~
Vincent2424
一般會員


發表:57
回覆:40
積分:19
註冊:2004-12-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-04-30 08:34:34 IP:219.84.xxx.xxx 未訂閱
非常感謝daniel__lee 大大的幫忙!!!
系統時間:2024-05-17 16:48:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!