作業五、中序運算式轉為後序、前序運算式

24 views
Skip to first unread message

Shyong Jian Shyu

unread,
Nov 26, 2011, 12:55:56 PM11/26/11
to sj11-data...@googlegroups.com
Dear All:
 
作業五相關資訊如下:
 
輸入:中序運算式
輸出:(a) 後序運算式、(b) 前序運算式
 
請依上課時講解的演算法和程式示範,完成此作業。
請標示你的作業可應付的運算子 (請至少包含 +, -, *, /, ^, (, )),並說明運算元的表示方式 (單一字元? 或允許多字元組成的運算元?)
測試無誤 (助教會輸入包含 +, -, *, /, ^, (, ) 的中序式),而只做中序轉後序者,分數自 70 分打起;一併完成中序轉前序者,自 80 分打起。
測試有問題者,酌情扣分。
  
繳交時間:   資二甲的班:  2011/11/28 2011/12/03 (週六) 中午12:00
                    資二乙的班:  2011/11/29 2011/12/03 (週六) 中午12:00
 
遲交三天以上不收件
 
另有程式參考畫面,請見
 
時間己延後,多測些中序式,看轉換是否正確;請大家加油!
 
熊大

林聖源

unread,
Nov 28, 2011, 8:59:50 AM11/28/11
to sj11-data...@googlegroups.com
#include<iostream.h>
改成
#include<iostream>
using namespace std;

for(i=0;i<x;i++)
如果i=0;會錯
請改成int i=0;

void main
如果無法編譯
請改成int main

#include<iomanip.h>
請改成
#include<iomanip>

#include<math.h>
請改成
#include<cmath>

#include<string.h>
請改成
#include<string>


P.S.
有一些小修改我忘了,還有就是CH13的那些題目(CATCH),我的DEV跟VISUAL過不了,但是吳宇君的VISUAL好像過的了,麻煩請老師在幫忙看一下,謝謝~

Shyong Jian Shyu

unread,
Nov 28, 2011, 10:25:13 AM11/28/11
to sj11-data...@googlegroups.com
Dear Ben:
 
這是提醒同學們,若 compile 有誤時可能的修正嗎?
"DEV跟VISUAL"? 若用 BCB 呢?
我在 BCB 可用
#include<iostream.h>
等等。
 
Have a nice day.
 
S. J.

g222...@yahoo.com.tw

unread,
Dec 1, 2011, 10:39:24 PM12/1/11
to sj11-DataStructures
輸入輸出問題

雖然compiler有過,但是跑不出來
但我輸出入百思不得其解...(對語法不解ˊˋ)
請老師幫我解謎 @@


void __fastcall TForm1::Button1Click(TObject *Sender)
{
char stack [MAXSIZE] ;
char priority [MAXSIZE];
int top;

char operate;

AnsiString line ;
char T;
T=line .c_str();
line = Edit1->Text;

top=0;
int i ;

for (i =0;i<MAXSIZE;i++)
{
operate = T[i];
switch(operate)
{
case'(':
top++;

stack[top]=operate;
priority[top]=0;
break;

Shyong Jian Shyu

unread,
Dec 2, 2011, 5:52:01 AM12/2/11
to sj11-data...@googlegroups.com
Hi,

可否先到處加
Memo1->Lines->Add(...)
把變數印出來看看,是否和預期的一樣~~ (如下)

Good lucks.

S. J. 

g222...@yahoo.com.tw <g222...@yahoo.com.tw> 於 2011年12月2日上午11:39 寫道:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char stack  [MAXSIZE] ;
char priority   [MAXSIZE];
int top;

char operate;

AnsiString  line ;
char T;
T=line .c_str();

Memo1->Lines-Add(T); 
line = Edit1->Text;
Memo1->Lines-Add("line="+line); 

top=0;
int i ;

for (i =0;i<MAXSIZE;i++)
{
  operate = T[i];
Memo1->Lines-Add("operate="+operate); 
       switch(operate)
        {
         case'(':
              top++;

              stack[top]=operate;
              priority[top]=0;
// 設法印出 stack[] 目前的所有內容 
              break;

Reply all
Reply to author
Forward
0 new messages