vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Suche Visual-Basic Code
Re: Magische Quadrate 
Autor: michi-bib
Datum: 16.05.03 14:58

Hallo erstmal,

müßte so gehen:

Option Explicit
 
Dim quadrat(100, 100) As Long
Dim ord As Long
 
Private Sub mod4()
    Dim a As Long, b As Long, erg As Long, zw As Long, i As Long, j As Long
 
    zw = ord / 4
    For i = 1 To ord
        For j = 1 To ord
            a = ((i - 1) / (zw))
            b = ((j - 1) / (zw))
            erg = a * 4 + b + 1
            Select Case erg
                Case 1, 4, 6, 7, 10, 11, 13, 16: quadrat(i, j) = (i - 1) * ord _
                  + j
                Case Else: quadrat(ord + 1 - i, ord + 1 - j) = (i - 1) * ord + j
            End Select
        Next j
    Next i
End Sub
 
Private Sub oddmod2()
    Dim x As Long, y As Long, anz As Long, zw As Long, i As Long
 
    x = (ord / 2 + 1) / 2
    y = 1
    anz = 0
    For i = 1 To (ord * ord / 4)
        quadrat(y, x) = i
        anz = anz + 1
        If (anz Mod (ord / 2) = 0) Then
            y = y + 1
        Else
            If (x = ord / 2) Then x = 1 Else x = x + 1
            If (y = 1) Then y = ord / 2 Else y = y - 1
        End If
    Next i
 
    x = (ord / 2 + 1) / 2 + (ord / 2)
    y = 1 + (ord / 2)
    anz = 0
    For i = 1 To (ord * ord / 4)
        quadrat(y, x) = i + (ord * ord / 4)
        anz = anz + 1
        If (anz Mod (ord / 2) = 0) Then
            y = y + 1
        Else
            If (x = ord) Then x = ord / 2 + 1 Else x = x + 1
            If (y = ord / 2 + 1) Then y = ord Else y = y - 1
        End If
    Next i
 
    x = (ord / 2 + 1) / 2 + (ord / 2)
    y = 1
    anz = 0
    For i = 1 To (ord * ord / 4)
        quadrat(y, x) = i + 2 * (ord * ord / 4)
        anz = anz + 1
        If (anz Mod (ord / 2) = 0) Then
            y = y + 1
        Else
            If (x = ord) Then x = ord / 2 + 1 Else x = x + 1
            If (y = 1) Then y = ord / 2 Else y = y - 1
        End If
    Next i
 
    x = (ord / 2 + 1) / 2
    y = 1 + (ord / 2)
    anz = 0
    For i = 1 To (ord * ord / 4)
        quadrat(y, x) = i + 3 * (ord * ord / 4)
        anz = anz + 1
        If (anz Mod (ord / 2) = 0) Then
            y = y + 1
        Else
            If (x = ord / 2) Then x = 1 Else x = x + 1
            If (y = ord / 2 + 1) Then y = ord Else y = y - 1
        End If
    Next i
 
    For i = 1 To (ord / 3)
        zw = quadrat(i, i)
        quadrat(i, i) = quadrat(ord / 2 + i, i)
        quadrat(ord / 2 + i, i) = zw
        If (i <> ord / 3) Then
            zw = quadrat(ord / 2 + 1 - i, i)
            quadrat(ord / 2 + 1 - i, i) = quadrat(ord + 1 - i, i)
            quadrat(ord + 1 - i, i) = zw
        End If
    Next i
End Sub
 
Private Sub ausgabe()
    Dim i As Long, j As Long
 
    For i = 1 To ord
        For j = 1 To ord
            Me.Print quadrat(i, j),
        Next j
        Me.Print vbCrLf
    Next i
End Sub
 
Private Sub Form_Activate()
    ord = CLng(InputBox("Ordnung:", , "6"))
 
    If ord < 3 Then
        MsgBox "Ordnung muß mindestens 3 sein !", vbInformation
        Unload Me
        Exit Sub
    End If
 
    If (ord Mod 2 = 1) Then
        MsgBox "Ordnung muß gerade sein !", vbInformation
        Unload Me
        Exit Sub
    End If
 
    If (ord Mod 4 = 0) Then
        mod4
    Else
        oddmod2
    End If
    ausgabe
End Sub
Habe jetzt nicht großartig auf Fehler-Handling etc. geachtet.
Man muß übgrigends unterscheiden bei den geraden Ordnungen
zwischen denen die durch 4 teilbar sind und die restlichen.

Gru? Michi aus Hannover

1 + 1 = 3 f?r hinreichend gro?e 1

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Magische Quadrate2.669met15.05.03 09:37
Re: Magische Quadrate1.460michi-bib16.05.03 14:58
Re: Magische Quadrate1.231brave@heart17.05.03 20:04
Re: Magische Quadrate1.164met19.05.03 16:17
Re: Magische Quadrate1.272michi-bib20.05.03 11:39

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel