Kezdőoldal » Számítástechnika » Programozás » Miért nem működik a programom?

Miért nem működik a programom?

Figyelt kérdés

Van egy problémám:írtam VB nyelven egy prímszám keresőt,de amikor megkérdezem,hogy ez prímszám-e,lefagy.

Itt a programkód:

Public Class Form1


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim i, n As Long

Dim l As Boolean

l = False

i = 1

n = Val(TextBox1.Text)

i = i + 1

l = (n Mod i = 0)

Do While l = False And i < Math.Sqrt(n)

If l = True Then Label1.Text = "Összetett"

If l = False Then Label1.Text = "Prím"

Loop

End Sub


2011. jún. 2. 16:50
 1/8 anonim ***** válasza:
Rossz helyen indítod ciklust. VB-nek nem tudom a szintaktikáját, de az i növelése elé kell a while.
2011. jún. 2. 21:39
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:
Átírtam,de ki kéne egészíteni hibakezelésell,mert ez csak n < 1 esetén működik rendesen,mert ha n értéke 1,a ciklus első lépésénél 2 Mod 1 értéke nagyobb,mint 0.Etttől kezde a program hiába növeli i-t,az i Mod 1 értéke mindig pozitív marad,tehát végtelen marad a ciklus.
2011. jún. 3. 15:48
 3/8 anonim ***** válasza:

A ciklus indítása elé beteszel egy olyan hogy:


If n>1 then

2011. jún. 3. 19:16
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:
Uhh benéztem, este ha lesz időm átnézem.
2011. jún. 3. 19:18
Hasznos számodra ez a válasz?
 5/8 anonim ***** válasza:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim i, n As Long

Dim l As Boolean

l = False

i = 1

n = Val(TextBox1.Text)

If n>1 then

Do While l = False And i < Math.Sqrt(n)

i = i + 1

l = (n Mod i = 0)

Loop

If l = True Then Label1.Text = "Összetett"

If l = False Then Label1.Text = "Prím"

else label1.text = "Érvénytelen"

endif

End Sub


Remélem érted és ki tudod javítani a hibáimat.

2011. jún. 3. 21:53
Hasznos számodra ez a válasz?
 6/8 A kérdező kommentje:

Nagyon is értem.

Itt a hibajavításom:


Public Class Form1


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim i, n As Long

Dim l As Boolean

l = False

i = 1

n = Val(TextBox1.Text)

If n > 1 Then

Do While l = False And i < Math.Sqrt(n)

i = i + 1

l = (n Mod i = 0)

Loop

If l = True Then Label1.Text = "Összetett"

If l = False Then Label1.Text = "Prím"

Else

Label1.Text = "Érvénytelen"

End If

End Sub

End Class

2011. jún. 4. 20:56
 7/8 A kérdező kommentje:

Egyébként nagyon köszönöm,egy estédet szántad rá,és nagyon örülök,hogy kijavult a programom.

Átküldöm majd neked.

2011. jún. 4. 21:05
 8/8 anonim ***** válasza:
Szívesen, örülök hogy sikerült.
2011. jún. 5. 17:32
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!