C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.6249 の関連記事表示

<< 0 >>
■6250  Re[1]: richtextで 空白行の削除
□投稿者/ はいこーん -(2006/09/04(Mon) 14:54:45)

    分類:[C#] 

    No6249に返信(waiさんの記事)
    > richtextで 空白行(複数)の削除の仕方を教えてください
    > よろしくお願いします

    まずは努力してください
    よろしくお願いします
記事No.6249 のレス /0過去ログ6より / 関連記事表示
削除チェック/

■6249  richtextで 空白行の削除
□投稿者/ wai -(2006/09/04(Mon) 14:39:05)

    分類:[C#] 


    分類:[C#] 

    richtextで 空白行(複数)の削除の仕方を教えてください
    よろしくお願いします
親記事 /0過去ログ6より / 関連記事表示
削除チェック/

■6249  電卓 1+2+3
□投稿者/ 韋駄天 -(2007/08/07(Tue) 00:08:02)

    分類:[VB.NET/VB2005] 

    VB.NETで電卓を作りました。
    普通の1回の四則演算までは出来ました。
    ただ、1+2+3だとか1+3−4
    のような連続した計算の仕方がわかりません。
    かなり基礎的な問題なのかと思われますが、
    自分にはよくわからないので
    どなたかわかる方がいらっしゃったら
    教えていただけると助かります。
親記事 /過去ログ17より / 関連記事表示
削除チェック/

■6251  Re[1]: 電卓 1+2+3
□投稿者/ アクア -(2007/08/07(Tue) 01:34:27)
>
    2007/08/07(Tue) 01:37:20 編集(投稿者)


    はじめましてアクアと申します。
    # 私事ですが、皆さんから『お前が教えてやれ!』と言われてる気がしたので協力させていただきます。

    本題ですが、提示なさっておられる文からの想像ですが、現在のコード上では
    変数A(1回目の入力値)
    変数B(2回目の入力値)
    の2つの変数が用意されていると思います。

    もしかしたら、今現在の韋駄天さんの頭の中では、
    『 変数Cを用意しなければならないのか? 』
    とお考えなのかもしれませんが、決してそうではなく、変数Aと変数Bにたいする考え方を

    変数A(現在入力している値を入れる変数)
    変数B(既に入力された値もしくは計算結果を入れる変数)

    の様な考え方に切り替えたら、また一歩道が開けると思います。
記事No.6249 のレス /過去ログ17より / 関連記事表示
削除チェック/

■6253  Re[2]: 電卓 1+2+3
□投稿者/ Jitta -(2007/08/07(Tue) 07:45:32)
    No6251 (アクア さん) に返信
    > 2007/08/07(Tue) 01:37:20 編集(投稿者)
    >
    >
    > はじめましてアクアと申します。
    > # 私事ですが、皆さんから『お前が教えてやれ!』と言われてる気がしたので協力させていただきます。

    ですね(笑)


    アクアさんのホームページへ行って、ツラツラ読んでみると、答えに行き当たることでしょう。


    まぁ、コピペはしてほしくないけど、多くの人が慣れている計算式で計算する計算機を作るのは、結構難しい...しっかりと、ケースの洗い出しと、設計を行ってください。
記事No.6249 のレス /過去ログ17より / 関連記事表示
削除チェック/

■6276  Re[1]: 電卓 1+2+3
□投稿者/ mあ -(2007/08/07(Tue) 12:53:18)
    No6249 (韋駄天 さん) に返信
    > VB.NETで電卓を作りました。
    > 普通の1回の四則演算までは出来ました。
    > ただ、1+2+3だとか1+3−4
    > のような連続した計算の仕方がわかりません。
    
    
    どえりやー長いけど、
    TextBox1,TextBox2,Button1,Button2 4つ用意してコピペしてGO。
    正負符号と掛け算・割り算が抜けています。アクアさんのHPは見たことありませんが、
    これとはまったく異なるやり方で実装されているかもしれません。
    以下の処理に、代入とか複合代入とか、単項演算子とか、if 文とか function とか、
    加えて拡張していくと、簡単なマクロ言語が出来ます。で、出来合いの文法通りに実装
    すると C# や VB.NET が出来ます。
    Parse1() と Parse2() が互いに呼び合うのは理解しにくいかもしれませんが、m_var に
    格納される種別コードを1つずつ順に追っていくとうっすらとなにやっているのかが
    理解できそうなできなさそうな、頭がこんがらがってきそうで・・・・な感じです。
    "後置記法"をWiki で下調べした上で見てみるとGoodですね。
    
    Public Class Form1
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
        End Sub
    
        Private Sub ClearText()
            TextBox1.Text = ""
            TextBox2.Text = ""
        End Sub
    
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            ClearText()
        End Sub
    
        Private Class ParseException
            Inherits Exception
            Public Sub New()
                MyBase.New("Parse Error")
            End Sub
            Public Sub New(ByVal s As String)
                MyBase.New(s)
            End Sub
        End Class
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
            Init()
            GetChar()
            Dim answer As Var = Parse1()
    
            TextBox2.Text = CStr(answer.Value)
    
    
    
    
        End Sub
    
        Private Function Parse1() As Var
            Dim leftVal As Var = Parse2()
            Do While m_var.Code = CharType.C_ADD Or m_var.Code = CharType.C_SUB
                If m_var.Code = CharType.C_ADD Then
                    GetChar()
                    Dim rightVal As Var = Parse2()
                    leftVal.Value = DirectCast(leftVal.Value, Integer) + DirectCast(rightVal.Value, Integer)
                Else
                    GetChar()
                    Dim rightVal As Var = Parse2()
                    leftVal.Value = DirectCast(leftVal.Value, Integer) - DirectCast(rightVal.Value, Integer)
                End If
            Loop
            Return leftVal
        End Function
    
        Private Function Parse2() As Var
            If m_var.Code = CharType.C_LPAR Then
                GetChar()
                Dim val As Var = Parse1()
                If m_var.Code <> CharType.C_RPAR Then
                    Throw New ParseException(") expected")
                Else
                    GetChar()
                    Return val
                End If
            Else
                Dim val As Var = m_var.Clone()
                GetChar()
                Return val
            End If
        End Function
    
        Private Structure Var
            Private m_cod As CharType
            Private m_val As Object
            Public Property Code() As CharType
                Get
                    Return m_cod
                End Get
                Set(ByVal value As CharType)
                    m_cod = value
                End Set
            End Property
            Public Property Value() As Object
                Get
                    Return m_val
                End Get
                Set(ByVal value As Object)
                    m_val = value
                End Set
            End Property
    
            Public Sub New(ByVal cod As CharType)
                m_cod = cod
                m_val = Nothing
            End Sub
            Public Sub New(ByVal cod As CharType, ByVal val As Object)
                m_cod = cod
                m_val = val
            End Sub
            Public Function Clone() As Var
                Return New Var(m_cod, m_val)
            End Function
        End Structure
    
        Private Enum CharType
            C_ADD
            C_SUB
            C_LPAR
            C_RPAR
            C_NUM
            C_EOS
            C_UNK
        End Enum
    
        Private m_pos As Integer = 0
        Private m_str As String
        Private m_lst As ArrayList
        Private m_var As New Var
    
        Private Sub Init()
            m_pos = 0
            m_str = TextBox1.Text
            m_lst = New ArrayList()
    
            m_lst.Add(New Var(CharType.C_UNK, "???"))
    
        End Sub
    
        Private Sub GetChar()
    
            m_var.Code = CharType.C_EOS
    
            Do While m_pos < m_str.Length
                Dim ch As Char = m_str.Chars(m_pos)
                Dim sNum As String = ""
                If ch >= "0" And ch <= "9" Then
                    Try
                        Do While ch >= "0" And ch <= "9"
                            sNum = sNum + ch
                            m_pos = m_pos + 1
                            ch = m_str.Chars(m_pos) ''IndexOutOfBoundsException
                        Loop
                    Catch ex As Exception
                        ''この例外は無視してOKよん
                    End Try
    
                    m_var.Value = CInt(sNum)
                    m_var.Code = CharType.C_NUM
                    Exit Sub
                End If
    
                If ch = "+" Then
                    m_pos = m_pos + 1
                    m_var.Code = CharType.C_ADD
                    Exit Sub
    
                End If
    
                If ch = "-" Then
                    m_pos = m_pos + 1
                    m_var.Code = CharType.C_SUB
                    Exit Sub
    
                End If
    
                If ch = "(" Then
                    m_pos = m_pos + 1
                    m_var.Code = CharType.C_LPAR
                    Exit Sub
    
                End If
    
                If ch = ")" Then
                    m_pos = m_pos + 1
                    m_var.Code = CharType.C_RPAR
                    Exit Sub
    
                End If
    
                If ch <> " " Then
                    Throw New NotSupportedException(ch + " is not supported.")
                End If
    
                m_pos = m_pos + 1
            Loop
        End Sub
    
    
    End Class
    
記事No.6249 のレス /過去ログ17より / 関連記事表示
削除チェック/

■6543  Re[1]: 電卓 1+2+3
□投稿者/ 魔界の仮面弁士 -(2007/08/17(Fri) 16:05:00)
    No6249 (韋駄天 さん) に返信
    > ただ、1+2+3だとか1+3−4
    > のような連続した計算の仕方がわかりません。

    Public Class Form1

     Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
      TextBox1.Text = "1+2+3"
      TextBox2.ReadOnly = True
     End Sub

     Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
      TextBox2.Text = Calc(TextBox1.Text).ToString()
     End Sub

     Function Calc(ByVal expression As String) As Double
      Using table As New DataTable()
       table.Columns.Add("ans", GetType(Double), expression)
       With table.Rows.Add()
        If .IsNull("ans") Then
         Return Double.NaN
        Else
         Return DirectCast(.Item("ans"), Double)
        End If
       End With
      End Using
     End Function

    End Class
記事No.6249 のレス /過去ログ17より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -