2012-06-05 3 views
-1

Как найти четные числа от 6 до 16.Confused? Как найти четные числа между двумя номерами? VB.NET

Дело в том, что я работаю с событиями. Как мне это сделать? Я провел много исследований и нашел код, который мог бы работать, но я не уверен, как это работает. (Я ни в коем случае не продвигаюсь с 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 

ответ

1

без дайвинга и других частей задания, вы проверяете для четных чисел, используя «Mod 2»

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

Для событий его части: Я не хочу давать вам код для вырезания и вставки, но рассмотрим эту идею: ваш основной юзер итерации через номер 6..16. На каждом номере вы создаете настраиваемое событие. Внутри события вы выходите на консоль, если она ровная.

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 
+0

Я оценил всю помощь, которую вы мне даете, и не торопитесь со своим днем! – CodeHelp

1

Этот код отлично подойдет вам. Вам просто нужно немного изменить логику. Этот код начинается с 2, поскольку счетчик равен 2. Вы можете, конечно, изменить это число, чтобы начать с того, что хотите, используя ту же логику, что и последний номер (если вы можете ввести последнее, вы можете, конечно, ввести первый;)).

Другая вещь, которую вы должны изменить, заключается в использовании mod operator, чтобы получить остаток от деления, поскольку, когда вы начинаете с добавления номера, у вас будет проблема, вы всегда предполагаете, что ваш первый номер даже ... .

в любом случае .. если вы хотите, чтобы начать в 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 
+0

Спасибо, что это потрясающая помощь! Я ценю, что вы уделили время своему делу, чтобы помочь мне! – CodeHelp

+0

У меня вопрос о части Event, как вы думаете, я могу поместить эту информацию в виде кнопки? потому что событие - это щелчок на кнопке справа? – CodeHelp

+0

да, конечно, вы можете .. просто попробуйте и дайте нам знать .. – gbianchi

1

Почему вы говорите, что вы используете события? Прежде всего, ни один из показанных вами кодов не использует события, но даже если ваш код для вычисления чисел был в обработчике событий, это ничего не изменит. Если, однако, ваш код должен поднять события каждый раз, когда он найдет четное число, или вызывает событие, когда это будет сделано, это немного изменит ситуацию.

Все, что вы делаете в методе Main, бессмысленно.Все это выполняет это вызов Even метод, который вы могли бы сделать очень просто, как это:

Sub Main() 
    Even() 
End Sub 

Даже если вам необходимо использовать делегат по какой-то причине, что там не наблюдается никаких причин, почему вы действительно, все, что вы должны сделать что-то вроде этого:

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

в вашем методе Even, я хотел бы использовать для цикла, а не Do Loop. Если вы нашли первое четное число, вы можете шаг за 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, то x является четным числом.

+0

Ребята я использовал делегата в другом проекте, я просто использовал его, потому что я думал, что это сработает, вся эта помощь очень помогает – CodeHelp