200
300
200
|
200
|
240
|
220 300 220*2
表示第二種尺寸為 200 240 200,一裁即以 *1 表示.
R 表示兩種尺寸之分隔處
實線表示要以刀切割處
虛線表示以滾輪壓痕處
想請教各位前輩指導,小弟下列問題:
2.當出現下狀況(1)使用計算出來刀或滾輪數使用數比機械上的多(2)修裁總長比輸入紙張長度還長(3)輸入錯誤格式時等狀況顯示訊息[此格式無法完成]
希望能有高手為小弟解除這問題~多謝
|
阿信
版主
發表:111 回覆:983 積分:813 註冊:2005-03-10
發送簡訊給我
|
你的兩個問題 第1個是計算 第2個是判斷 這你怎麼計算 怎麼判斷 程式就怎麼計算 怎麼判斷
是不知道邏輯如何處理? 還是不知道如何把邏輯轉成程式呢?
|
lei1120
一般會員
發表:2 回覆:4 積分:1 註冊:2006-07-24
發送簡訊給我
|
===================引 用 文 章===================
你的兩個問題 第1個是計算 第2個是判斷 這你怎麼計算 怎麼判斷 程式就怎麼計算 怎麼判斷
是不知道邏輯如何處理? 還是不知道如何把邏輯轉成程式呢?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
小弟的問題就像大大您所說的隻到它的動作模式有基本邏輯概念
但是就是苦於無法實現將它轉換成程式,應此才會上來請教有實力能轉換的大大
看是否可以求得大體動作模式的程式~~多謝
|
阿信
版主
發表:111 回覆:983 積分:813 註冊:2005-03-10
發送簡訊給我
|
你會寫程式也知道邏輯了嗎
BCB我不會 但我知道邏輯
1.格式檢查 格式不合則提示錯誤
一個字元一個字元的檢查
符號計數值=0
第一個字元必須為數字
若為數字 符號計數值=0
若不為數字 判斷是否為合法符號( ,*,R)
若不是 提示錯誤
若是 符號計數值 1
若符號計數值大於等於2 提示錯誤
換下一個字元
2.計算修裁總長度 並判斷是否大於輸入紙張長度 若大於則提示錯誤
3.計算使用刀數 並判斷是否大於7 若大於則提示錯誤
4.計算滾輪數 並判斷是否大於12 若大於則提示錯誤
5.計算刀的位置
6.計算滾輪的位置
可以先看看你現在的程式嗎!
|
lei1120
一般會員
發表:2 回覆:4 積分:1 註冊:2006-07-24
發送簡訊給我
|
===================引 用 文 章===================
可以先看看你現在的程式嗎!
以下是小弟的程式
ans=ans "\n"; kfs=""; whs=""; char text[80]; memmove(text,ans.c_str(),ans.Length()); char Nunber[5]={0}; int MUL; int sum_total=0,Add=0; int ivv,jvv,kvv,ii,jj,kk,aa; jvv=0; kk=0; for(ivv=0;text[ivv] !='\n';ivv )//判斷結束字元 { if( text[ivv] != 'R') { if( (text[ivv] ==' ') || (text[ivv] == '*') ) { Add = atoi(Nunber); sum_total = Add; jvv=0; if(text[ivv] ==' ') { whs =AnsiString(sum_total) " "; } } else if(text[ivv-1] == '*') { for(kvv=0;kvv<=4;kvv ) { Nunber[kvv] = 0x00; } kfs =AnsiString(sum_total) " "; //MUL=text[i]-0x30; jvv=0; kvv = ivv; while(1) { if( (text[kvv] == 'R') || (text[kvv] == '\n') ) { MUL = atoi(Nunber); MUL = MUL-1; aa = jvv; jvv = 0; break; } else { Nunber[jvv] = text[kvv]; jvv ; kvv ; } } for(kvv=0;kvv<=4;kvv ) { Nunber[kvv] = 0x00; } jvv=0; for(ii = 0;ii { for(jj=kk;text[jj] !='R';jj ) { if( (text[jj] ==' ') || (text[jj] == '*') ) { Add = atoi(Nunber); sum_total = Add; jvv=0; if(text[jj] == '*') { break; } else { whs =AnsiString(sum_total) " "; } } else { Nunber[jvv] = text[jj]; jvv ; } } kfs =AnsiString(sum_total) " "; } kk = ivv aa 1; jvv=0; for(kvv=0;kvv<=4;kvv ) { Nunber[kvv] = 0x00; } } else { Nunber[jvv] = text[ivv]; jvv ; } } else { jvv = 0; } }
kvv = ivv; while(1) { kvv--; if( (text[kvv] ==' ') || (text[kvv] == '*')||( text[ivv] == 'R') )//判斷最後若有加號,則加最後一個數 { //其他則無 if(text[kvv] ==' ') { Add = atoi(Nunber); sum_total = Add; kfs =AnsiString(sum_total) " "; } break; } } Edit3->Text=IntToStr(sum_total); if(Edit1->Text=="") { Shape1->Width=750; } else { Shape1->Width=StrToInt(Edit1->Text)*0.3; } Shape1->Left=((Panel1->Width)-(Shape1->Width))/2;
上述做的內容是判斷輸入EDIT的格式顯示總裁切長度
還有將要下刀和下輪的地方分兩個陣列放
但總感覺這樣寫起來很陽春,二來對智慧選擇的地方還沒有好的頭緒
不知道哪位大大有比較好的見解和方法~可以提供
|
阿信
版主
發表:111 回覆:983 積分:813 註冊:2005-03-10
發送簡訊給我
|
看別人的程式好辛苦
程式風格 1.先做好程式架構 2.先寫註解再寫程式 3.使用有意義的變數名稱 4.模組化 分出主程式跟副程式
------------------------------- 2.計算修裁總長度 並判斷是否大於輸入紙張長度 若大於則提示錯誤
(1)找數字 起找位置=0 Loop: 尋找符號位置( ,*,R) 若沒有符號 則跳出 符號前的字元組合成一個數字存起來(使用int陣列) 符號存起來(使用char陣列) 起找位置=符號位置 1 回Loop再找一次
(2)計算
依序取數字 判斷符號若為" " 則加下個數字 判斷符號若為"*" 則乘下個數字 判斷符號若為"R" 則記下目前總數 重新取數字
下面是參考程式 不是可執行的
計算長度副程式 (){ Number[]={100,200,200,2,300}; //int陣列 symbol[]={' ',' ','*','R'}; //char陣列
i=0; //做迴圈用 sum=0; //總長度 sumtemp=Number[i]; //長度暫存
for (i=0,i<符號數目,){ //這裡i不用
if (symbol[i]==' '){ i ; sumtemp =Number[i]; }
elseif (symbol[i]=='*'){ i ; sumtemp*=Number[i]; }
elseif (symbol[i]=='R'){ i ; sum=sumtemp; sumtemp=Number[i]; } }
sum =sumtemp; //這裡就是總長度了 }
|
阿信
版主
發表:111 回覆:983 積分:813 註冊:2005-03-10
發送簡訊給我
|
|
lei1120
一般會員
發表:2 回覆:4 積分:1 註冊:2006-07-24
發送簡訊給我
|
===================引 用 文 章=================== 另外如果是200 300*2 100 要怎麼裁
看不懂您的意思~你是指200 300這種SIZE裁兩張再裁1張100這種SIZE嗎?
如果是的話小弟在一開此問題的時候~就有說過尺寸不同時須以R做分隔
又如果是您所想表示的是200 300 300 100這樣的話~
那就必須要照小弟所打的不可以用*2來表示(不好意思程式功力不高~待大大解決^^)
而小弟PO出來的程式本身就可以算出總長@@
我只是卡在選擇刀和輪子不知如何下手!!
|
阿信
版主
發表:111 回覆:983 積分:813 註冊:2005-03-10
發送簡訊給我
|
我的意思是當發生這種輸入時 200 300*2 100 是判斷為錯誤輸入嗎? 如果是的話 輸入檢查副程式中要加一條 '*'號後面的符號只能是'R'
200 300*2*2時又如何? 應該也要判斷為錯誤輸入吧!
>我只是卡在選擇刀和輪子不知如何下手!! 這聽不是很懂耶!
我之前提了6個程式步驟 1.格式檢查 2.計算修裁總長度 3.計算使用刀數 ...
你的問題是哪一個? 還是是在這些之外! 可不可以說明詳細一點!
|
lei1120
一般會員
發表:2 回覆:4 積分:1 註冊:2006-07-24
發送簡訊給我
|
>我的意思是當發生這種輸入時 >200 300*2 100 >是判斷為錯誤輸入嗎? >如果是的話 >輸入檢查副程式中要加一條 >*'號後面的符號只能是'R'
>200 300*2*2時又如何? >應該也要判斷為錯誤輸入吧!
的確~上述格式應判斷為輸入錯誤沒錯
>我之前提了6個程式步驟
1.格式問題~小弟目前沒有去做像上面您所說的格式判斷
2.計算修裁總長度並判斷是否超出輸入紙張長度~有完成
3.4.計算刀和輪的使用數~小弟有自己另寫一個副程式有計算~方式陽春勉強達成
5.6.刀和輪的位置也有計算&紀錄
而小弟再上上一篇所說的問題則是
我現在知道該用幾隻刀(輪)也知道位置
但是~我該用哪隻刀(或輪)?~才是最方便的選擇在定位或是執行速度上也比較快?
不知道這樣拙劣的表示~是否能讓你理解~
因為小弟是半途出家~接觸時間不長(約5個月)~所以請多包涵!
|
阿信
版主
發表:111 回覆:983 積分:813 註冊:2005-03-10
發送簡訊給我
|
共有7隻刀 12滾輪
這些刀輪有沒有原始位置 跟移動位置限制
如第1刀只能在0~300的位置 第2刀只能在150~450的位置
如果有 還要再限制輸入條件 如果沒有 那就隨便排
還是你是想 要平均使用
比如用3隻刀時 就用第1、4、7刀 用4隻刀時用1、3、5、7刀
如果是這樣 那直接用查表法就好了 反正就1~7隻刀而已 至於滾輪 也一樣處理
|