討論區快速選單
知識庫快速選單
討論區最近新進100則主題 程式設計俱樂部Facebook粉絲團 軟體開發過程中有哪些資安漏洞?
[ 回上頁 ] [ 討論區發言規則 ]
字串的處理
更改我的閱讀文章字型大小
作者 : q9560(野焉弦)
[ 貼文 7 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/11/15 下午 07:15:08
子題1: 在此子題中,邏輯表示式的內容只包括「true」、「false」、「= =」、「!=」及「空格」。
其中「true」代表邏輯運算的「真」,而「false」代表「假」;另「= =」代表邏輯運算的「是否
相等」,而「!=」代表「是否不相等」。已知「= =」運算,在前後比較值「同為true」或「同為
false」時,其結果為「true」;但若比較值「一個true、一個false」時,其結果為「false」。另
知「!=」運算前後比較值「同為true」或「同為false」時,其結果為「false」;但若比較值「一
個true、一個false」時,其結果為「true」。在邏輯表示式中的空白均不具運算意義,選手可
忽略之。輸入檔的資料,每行代表一個邏輯表示式,請選手判斷其邏輯運算的最後結果。若
最後結果為真,該相對應輸出為「TRUE」;若為假,輸出「FALSE」。輸入的字串,不存在邏
輯表示式語法的錯誤,選手可不必另外檢查之。本題的邏輯運算由多個子邏輯運算組成時,
其運算應由左自右逐步檢查。
輸入說明:
共有4 行資料,每行有1 個邏輯表示式,每行最多120 個字。
輸出說明:
共4 行,分別列出輸入檔對應的邏輯表示式計算結果。若最後結果為真,該相對應輸出為
「TRUE」,反之輸出「FALSE」。(輸出均為大寫,選手請注意。)
輸入範例:
true= =false!=false
true!=true= =false= =true= =false
false= =false!=true!=true!=flase= =true
false!=false= =true= =false= =true!=false= =true!=false

輸出範例
FALSE
FALSE
TRUE
TRUE

哪位高手可以告訴我該從何做起?XD"


資料來源:http://59.125.86.121/skill_competition/HistoryFile.php 100模擬-術科
作者 : x812116(銀月幻象)
[ 貼文 28 | 人氣 1492 | 評價 130 | 評價/貼文 4.64 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人q9560註記此篇回應為最佳解答 2011/11/16 下午 05:10:00
先將true為1,false為0,= =為2,!=為3寫入陣列
同時記錄轉換多少次

false!=false= =true= =false= =true!=false= =true!=false
030212021302130

次數(MAX)= 15

//下為判斷程式

//NO1========================================
//int data[30]={1,2,0,3,0};
//int max=5;
//NO2=========================================
//int data[30]={1,3,1,2,0,2,1,2,0};
//int max=9;
//NO3=========================================
//int data[30]={0,2,0,3,1,3,1,3,0,2,1};
//int max=11;
//NO4=========================================
//int data[30]={0,3,0,2,1,2,0,2,1,3,0,2,1,3,0};
//int max=15;
int d;

    d= data[0];
    for(int i=1;i<max;i=i+2)
    {
if(data[i]==2)
{
if(d==data[i+1])
d=1;
else
d=0;
     }
else if(data[i]==3)
{
f(d!=data[i+1])
d=1;
else
d=0;
     }
    }
   
迴圈完成後,d值即為結果

希望有幫助,上訴判斷程式用C寫成,請自行改寫
作者 : x812116(銀月幻象)
[ 貼文 28 | 人氣 1492 | 評價 130 | 評價/貼文 4.64 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人q9560註記此篇回應為最佳解答 2011/11/16 下午 05:10:16
先將true為1,false為0,= =為2,!=為3寫入陣列
同時記錄轉換多少次

false!=false= =true= =false= =true!=false= =true!=false
030212021302130

次數(MAX)= 15

//下為判斷程式

//NO1========================================
//int data[30]={1,2,0,3,0};
//int max=5;
//NO2=========================================
//int data[30]={1,3,1,2,0,2,1,2,0};
//int max=9;
//NO3=========================================
//int data[30]={0,2,0,3,1,3,1,3,0,2,1};
//int max=11;
//NO4=========================================
//int data[30]={0,3,0,2,1,2,0,2,1,3,0,2,1,3,0};
//int max=15;
int d;

    d= data[0];
    for(int i=1;i<max;i=i+2)
    {
if(data[i]==2)
{
if(d==data[i+1])
d=1;
else
d=0;
     }
else if(data[i]==3)
{
f(d!=data[i+1])
d=1;
else
d=0;
     }
    }
   
迴圈完成後,d值即為結果

希望有幫助,上訴判斷程式用C寫成,請自行改寫
作者 : kevingif(叛逆之風)
[ 貼文 11 | 人氣 0 | 評價 180 | 評價/貼文 16.36 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人q9560註記此篇回應為最佳解答 2011/11/17 上午 11:25:53
換一個做法
利用
MSScriptControl.ScriptControl
做運算
將 = = 取代為 =
將 != 取代為 <>
一樣是字串的形式
參考以下 VB2005 語法
 
   '分析以下4個字串所最後結果,有左到右
     ' "true= =false!=false"
     ' "true!=true= =false= =true= =false"
     ' "false= =false!=true!=true!=false= =true"
     ' "false!=false= =true= =false= =true!=false= =true!=false"
   Dim str(3) As String
     str(0) = "true= =false!=false"
     str(1) = "true!=true= =false= =true= =false"
     str(2) = "false= =false!=true!=true!=false= =true"
     str(3) = "false!=false= =true= =false= =true!=false= =true!=false"
  '利用 MSScriptControl.ScriptControl
     '"vbscript" 去做運算
     Try
     Dim exp As String = ""
     Dim t As Type = Type.GetTypeFromProgID("MSScriptControl.ScriptControl")
     Dim obj As Object = Activator.CreateInstance(t)

     For i As Integer = 0 To 3
     str(i) = str(i).Replace("= =", " = ")
     exp = str(i).Replace("!=", " <> ")
     t.InvokeMember("Language", System.Reflection.BindingFlags.SetProperty, _
     Nothing, obj, New Object() {"vbscript"})

     Dim result As Object = t.InvokeMember("Eval", System.Reflection.BindingFlags.InvokeMethod, _
     Nothing, obj, New Object() {exp})
     MsgBox(CStr(result)) '這就是答案
     Next
     Catch ex As Exception
     MsgBox(ex.ToString, MsgBoxStyle.Information)
     End Try
作者 : q9560(野焉弦)
[ 貼文 7 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/11/17 下午 07:18:43
謝謝你xd" 但我要從c轉換到vb6.0 我可能要花時間ㄖ!!
作者 : q9560(野焉弦)
[ 貼文 7 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/11/17 下午 07:19:45
謝謝你xd"
作者 : q9560(野焉弦)
[ 貼文 7 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/11/17 下午 07:19:50
謝謝你xd"
作者 : ziyuefan(紫曰)
[ 貼文 160 | 人氣 375 | 評價 800 | 評價/貼文 5 | 送出評價 7 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/11/25 下午 07:15:05
Sub 按鈕1_Click()

A = Array("false", "true", "= =", "!=")
Dim LineTry(3)
LineTry(0) = "true= =false!= false "
LineTry(1) = "true!=true= =false= =true= =false "
LineTry(2) = "false= =false!=true!=true!=flase= =true "
LineTry(3) = "false!=false= =true= =false= =true!=false= =true!=false"

For K = 0 To UBound(LineTry)
L = LineTry(K)
I = 1
R = False
opcode = 0
Do Until I > Len(L)

    For J = 0 To UBound(A)
     tmp1 = A(J)
     If I + Len(tmp1) - 1 <= Len(L) Then
     If Mid(L, I, Len(tmp1)) = tmp1 Then
     Exit For
     End If
     End If
    Next
    
    Select Case J
     Case 0 '"false"
     tmp2 = False
     Select Case opcode
     Case 0
     R = tmp2
     Case 1
     R = (R = tmp2)
     Case 2
     R = (R <> tmp2)
     End Select
     I = I + Len(tmp1)
     Case 1 '"true"
     tmp2 = True
     Select Case opcode
     Case 0
     R = tmp2
     Case 1
     R = (R = tmp2)
     Case 2
     R = (R <> tmp2)
     End Select
     I = I + Len(tmp1)
     Case 2 '"= ="
     opcode = 1
     I = I + Len(tmp1)
     Case 3 '"!="
     opcode = 2
     I = I + Len(tmp1)
     Case Is > UBound(A) 'Not Found
     I = I + 1
    End Select

Loop

Select Case R
    Case True
     MsgBox """" & L & """ is TRUE"
    Case False
     MsgBox """" & L & """ is FALSE"
End Select

Next K


End Sub
 板主 : 小樓
 > Visual Basic 6.0/VBA - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual Basic 6.0/VBA - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual Basic 6.0/VBA
1 阿戊 10670 
2 小樓 8650 
3 Jones 5270 
4 水瓶天賞 2340 
5 joe 2230 
6 史努比 1950 
7 阿呆紅 1440 
8 tt's 1250 
9 青衫 1150 
10 羅啟章 1020 
Visual Basic 6.0/VBA
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.1557617