-1

6から16までの偶数を見つける方法.

問題は、私がイベントを扱っていることです。どうすればいいですか?私は多くの調査を行い、機能する可能性のあるコードをいくつか見つけましたが、それがどのように機能するかはわかりません. (私は決して vb.net の上級者ではありません。このコースを修了しようとしているだけです。)

私が見つけたのは、MODを使用する必要があるということでしたか? イベントでそれを使用する方法が本当にわかりませんか?どんなコードでも、この課題を完了するために私を道に導くのに素晴らしいでしょう.

偶数を見つけなければならないプログラムからこのコードを取り出しましたが、うまく機能しますが、唯一の欠点は、1 から開始し、次に任意の数値で停止することです。私は6から16までしか必要としません..

Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Diagnostics

Module Module1
    Private Delegate Sub numManip()

    Sub Main()
        Dim evennumber As numManip
        Dim allNumbers As [Delegate]
        evennumber = New numManip(AddressOf Even)
        allNumbers = [Delegate].Combine(evennumber)
        allNumbers.DynamicInvoke()
    End Sub

    Sub Even()
        Console.Clear()
        Dim counter As Integer = 2
        Console.WriteLine("Even Numbers")
        Console.WriteLine("Please Enter the Number you Wish to End at: ")
        Dim number As Integer = Console.ReadLine()
        Console.Clear()
        Console.WriteLine("All Even Numbers From 6 to " & number)
        Do Until counter > number
            Console.WriteLine(counter)
            counter += 2
        Loop
        Console.WriteLine("Press Enter to Continue...")
        Console.ReadLine()
    End Sub

    Public Enum Numbers
        Unset
        Prime
        Composite
    End Enum
End Module
4

3 に答える 3

1

このコードはあなたにぴったりです。ロジックを少し変更するだけです。このコードは、counter が 2 であるため、2 から始まります。もちろん、最後の数字を入力するのと同じロジックを使用して、その数字を任意の数字から開始するように変更できます (最後の数字を入力できる場合は、もちろん最初の数字を入力できます。 ) ) )。

他に変更しなければならないことは、mod 演算子を使用して除算の残りを取得することです。これは、加数から始めると、最初の数が常に偶数であると常に仮定するという問題が発生するためです...

とにかく.. 6 から始めたい場合は、この行を変更するだけです

Dim counter As Integer = 2

Dim counter As Integer = 6

常に16時に終了したい場合は、これを変更してください

Console.WriteLine("Even Numbers")
Console.WriteLine("Please Enter the Number you Wish to End at: ")
Dim number As Integer = Console.ReadLine()
Console.Clear()

これに:

Dim number As Integer = 16
于 2012-06-05T15:15:34.160 に答える
1

割り当ての他の部分に飛び込むことなく、「Mod 2」を使用して偶数をチェックします

If (myNum Mod 2) = 0 Then
 'It's even!
Else 
 'It's not!
End If

そのイベントの部分について: カット アンド ペーストするコードを提供したくありませんが、次のアイデアを考慮してください。各番号で、カスタム イベントを発生させます。イベント内で、偶数の場合はコンソールに出力します。

  Class NumEventArgs
      Inherits EventArgs
      Public Property Num() As String

      Public Sub New(num As Integer)
         Me.Num = num
      End Sub
   End Class
   Public Event NumCheckEvent(sender As Object, e As NumEventArgs)
   Sub Main()
      AddHandler NumCheckEvent, AddressOf NumCheckEventHandler
      For i = 6 To 16 Step 2
         RaiseEvent NumCheckEvent(Nothing, New NumEventArgs(i))
      Next
   End Sub
   Sub NumCheckEventHandler(sender As Object, e As NumEventArgs)
      If e.Num Mod 2 = 0 Then
         Console.WriteLine("Even!")
      End If
   End Sub
于 2012-06-05T15:11:57.853 に答える
1

なぜイベントを使用していると言うのですか? まず第一に、あなたが示したコードはどれもイベントを使用していませんが、数値を計算するコードがイベント ハンドラーにあったとしても、何も変わりません。ただし、コードが偶数を見つけるたびにイベントを発生させる必要がある場合、または完了時にイベントを発生させる必要がある場合は、状況が少し変わります。

メソッドで行っていることはすべてMain無意味です。メソッドを呼び出すEvenだけで、次のように非常に簡単に実行できます。

Sub Main()
    Even()
End Sub

なんらかの理由でデリゲートを使用する必要があったとしても、その理由がないように思われる場合でも、次のようなことを行うだけで済みます。

Sub Main()
    Dim evenDelegate As numManip = New numManip(AddressOf Even)
    evenDelegate.Invoke()
End Sub

あなたのEven方法では、Do ループではなく For ループを使用します。最初の偶数が見つかった場合は、次のように 2 ずつ進めることができます。

For i As Integer = evenStartingNumber To endingNumber Step 2
Next

それ以外の場合は、すべての数値をループして (1 ずつステップ実行)、各数値をテストして偶数か奇数かを確認する必要があります。そのような:

For i As Integer = startingNumber To endingNumber
   If IsEven(i) Then
   End If
Next

数値が偶数か奇数かを判断するには、ここでMod演算子 の出番です。Mod除算の余り (残りの分数) を返します。たとえば、10 を 4 で割ると 2 余りが 2 になります。任意の偶数を 2 で割った場合、余りは常にゼロx Mod 2 = 0です。

于 2012-06-05T15:17:34.103 に答える