
magisches Quadrat
-
- User
- Beiträge: 17
- Registriert: Donnerstag 9. November 2006, 18:33
ja das habe ich geschaft die liste aus zu füllen ist ja nicht schwer
.. aber das programmieren zu können ist es schwer... also wie ist liste Aus fülle ist nicht schwer aber was wenn der benutzer mehr als drei felder eingebt Zb. 5... es muss doch eine Algorithmus geben wie man das an stellt. und das was ich da gemacht habe sind ja Fertige listen
kann man ja noch einfacher Programmieren... sorry, wenn ich zu viel Frage, ich bin ja neueling von Python habe angefangen erst seit 3 monaten... 



Stimmt, Wikipedia beschreibt einen.lilhill2002 hat geschrieben:es muss doch eine Algorithmus geben wie man das an stellt.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Nach dem Beispiel mit den ersten drei Zahlen das von *ihm* kam, dachte ich eigentlich den Algorithmus von Wikipedia kennt er schon. Das wäre sonst schon ein ziemlich grosser Zufall...
-
- User
- Beiträge: 17
- Registriert: Donnerstag 9. November 2006, 18:33
die die Algorithmus ist mir bekannt.. es war keine zufall... aber die berechnung kann ich nicht... oder das erzetzen nach einandere mit Whli oder for Schleife... 

-
- User
- Beiträge: 17
- Registriert: Donnerstag 9. November 2006, 18:33
also habe meine es jetzt so weit bekommen habe den Consolen Skript noch eingefügt damit ich das später die Oberfläsche bearbeiten kann aber das brechen fellt mir echt schwer..

Code: Alles auswählen
# -*- coding: utf-8 -*-
###############################################
import console
bilds = console.Console()
bilds.clrScr()
bilds.setTitle('.:::Magisches Quadrat:::.')
bilds.gotoXY(0,24)
bilds.cPuts('geben sie ein Ungerade Zahl ein ( 3,5,7,9,11): ')
eingabe = bilds.cGets(2)
dim = int(eingabe)
if dim in [3, 5, 7, 9, 11]:
# Eine Liste initialisieren:
# bilds.clrScr()
bilds.clrScr()
eingabe =[]
for i in range (dim):
liste = ['_']*dim
eingabe.append(liste)
eingabe [0] [dim/2] = 1
print eingabe
# Ein Quadrat erstellen:
else:
# Bei falscher Eingabe Programm beenden:
bilds.clrScr()
bilds.cPuts('falsche Eingabe -> Programm wird beendet!')
Also nochmal: Beschreibe in Worten wie Du Schritt für Schritt vorgehst um die Zahlen einzutragen. Du musst Dir jeweils merken welches Feld als letztes ausgefüllt wurde -> Koordinaten. Und dann musst Du beschreiben wie Du diese Koordinaten veränderst um zum jeweils nächsten Feld zu kommen.
Hi leute ich bin mit lilhil2002 in einer klasse das beudetet auf dem gleichen level und ich krieg es nicht gebacken die zahlen so zu positionieren das es waggerecht diagonal und senkrecht das gleich eergibt ich hab es nur bisher das die 1 immer inner mitte der ersten zeile ist.
so zum beispiel:
[0,0,1,0,0]
[0,0,1,0,0]
[0,0,1,0,0][/code]
so zum beispiel:
[0,0,1,0,0]
[0,0,1,0,0]
[0,0,1,0,0][/code]
Bin ein Anfänger in Sachen Programmieren und hab nochnie vorher C/C++ oder andere Programmiersprachen geschrieben.
Hallo Lilmil, willkommen im Forum,
Hast du auch eine Frage und magst du einfach nur deine Zwischenergebnisse dokumentieren?
Tja, dann wirst du daran noch etwas arbeiten müssen. Aber es ist sicherlich zu schaffen, ich wünsche dir viel Glück.Lilmil hat geschrieben:ich krieg es nicht gebacken die zahlen so zu positionieren das es waggerecht diagonal und senkrecht das gleich eergibt ich hab es nur bisher das die 1 immer inner mitte der ersten zeile ist.
Hast du auch eine Frage und magst du einfach nur deine Zwischenergebnisse dokumentieren?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Toll ichd achte hier bekommt man hilfe. mein lehrer meint ich brauch den modulo operator (%) aber kp wi eman den einsetzt.-
Bin ein Anfänger in Sachen Programmieren und hab nochnie vorher C/C++ oder andere Programmiersprachen geschrieben.
Man bekommt Hilfe. Du willst allerdings keine hilfe, du willst, dass dir jemand das Endergebnis gibt.
Und wenn du nicht weißt, was Modulo ist, kannst du entweder deinen Lehrer fragen, oder irgendwo nachschauen. Beispielsweise hier: http://de.wikipedia.org/wiki/Modulo
Und wenn du nicht weißt, was Modulo ist, kannst du entweder deinen Lehrer fragen, oder irgendwo nachschauen. Beispielsweise hier: http://de.wikipedia.org/wiki/Modulo
Nochmal eine Zusammenfassung "unserer" "Forderungen":
Der Algorithmus selbst steht bei Wikipeda.
Erster Schritt: Das ganze mit Papier und Bleistift nachvollziehen und dann in natürlicher Sprache möglichst genau, Schritt für Schritt formulieren was gemacht werden muss. Felder und "Bewegungen" von einem Feld zum nächsten dabei in Koordinaten ausdrücken. Überprüfen ob ein wirklich dämlicher Mensch damit was anfangen kann, weil ihr das später einem Rechner "erklären" müsst. Rechner können gut und schnell mit Zahlen, sind sonst aber dumm wie Brot.
Zweiter Schritt: Versuchen die Beschreibung wenn nötig noch etwas genauer zu formulieren und in Programmcode umzuwandeln.
Dritter Schritt: Beschreibung und Programmcode herzeigen und beschreiben wo genau das Problem liegt, oder wo das gezeigte Programm etwas anderes macht als ihr erwartet.
Wir helfen hier gerne bei konkreten Problemen. Was es im allgemeinen nicht gibt, sind Komplettlösungen zu Hausaufgaben oder wirklich ganz grundlegende Erklärungen, die man sich durch ein Anfängertutorial erarbeiten kann, bzw. die eigentlich im Unterricht erklärt werden müssten.
Modulo kann man übrigens benutzen, um den Quelltext etwas zu verkürzen, aber es geht auch ohne. Also nicht krampfhaft nach einer Lösung mit Modulo suchen, sondern lieber erstmal das Problem als ganzes Lösen. Optimieren kann man später immer noch.
Der Algorithmus selbst steht bei Wikipeda.
Erster Schritt: Das ganze mit Papier und Bleistift nachvollziehen und dann in natürlicher Sprache möglichst genau, Schritt für Schritt formulieren was gemacht werden muss. Felder und "Bewegungen" von einem Feld zum nächsten dabei in Koordinaten ausdrücken. Überprüfen ob ein wirklich dämlicher Mensch damit was anfangen kann, weil ihr das später einem Rechner "erklären" müsst. Rechner können gut und schnell mit Zahlen, sind sonst aber dumm wie Brot.
Zweiter Schritt: Versuchen die Beschreibung wenn nötig noch etwas genauer zu formulieren und in Programmcode umzuwandeln.
Dritter Schritt: Beschreibung und Programmcode herzeigen und beschreiben wo genau das Problem liegt, oder wo das gezeigte Programm etwas anderes macht als ihr erwartet.
Wir helfen hier gerne bei konkreten Problemen. Was es im allgemeinen nicht gibt, sind Komplettlösungen zu Hausaufgaben oder wirklich ganz grundlegende Erklärungen, die man sich durch ein Anfängertutorial erarbeiten kann, bzw. die eigentlich im Unterricht erklärt werden müssten.
Modulo kann man übrigens benutzen, um den Quelltext etwas zu verkürzen, aber es geht auch ohne. Also nicht krampfhaft nach einer Lösung mit Modulo suchen, sondern lieber erstmal das Problem als ganzes Lösen. Optimieren kann man später immer noch.
Deine frage ist, wie man Modulo verwendet? Fein, das kann ich dir erklären, man nutzt es so:Lilmil hat geschrieben:Toll ichd achte hier bekommt man hilfe. mein lehrer meint ich brauch den modulo operator (%) aber kp wi eman den einsetzt.-
Code: Alles auswählen
In [2]: 5 % 2
Out[2]: 1
In [3]: 5 % 5
Out[3]: 0
In [4]: 5 % 1
Out[4]: 0
In [5]: 5 % 3
Out[5]: 2
In [6]: 10 % 5
Out[6]: 0
In [7]: 10 % 3
Out[7]: 1
My god, it's full of CARs! | Leonidasvoice vs Modvoice
lol ich weiß das ich selber auf das ergebnis kommen muss und es auch unbedingt will hast falsch verstanden vllt. naja auf jeden fall kenn ich auch den modulo operator und seine aufgabe. naja hab das prog. jetzt fertig und mache noch ein paar erweiterungen.ciao
thx für eure hilfe

Bin ein Anfänger in Sachen Programmieren und hab nochnie vorher C/C++ oder andere Programmiersprachen geschrieben.
-
- User
- Beiträge: 17
- Registriert: Donnerstag 9. November 2006, 18:33
Hallo habe mich mit ein Kopel zusammen gesetzt und haben das raus bekommen es funktioniert .. aber sieht noch nicht schick aus.. vielleicht irgend jemand paar vorschläge ....
Danke
Danke

Code: Alles auswählen
# -*- coding: utf-8 -*-
import console
bilds = console.Console()
bilds.clrScr()
bilds.setTitle('.:::Magisches Quadrat:::.')
bilds.gotoXY(0,24)
eingabe = input('Wie gross soll ihr magisches Quadrat werden? : ')
print 45*'='
magischequadrat = []
lieste = []
ersatz = 0
x = 0
y = 0
# Schreibe Nullen in das Magische Quadrat
for i in range (eingabe):
lieste=[]
for j in range (eingabe):
lieste+=[0]
magischequadrat+=[lieste]
if eingabe % 2 == 1:
x = eingabe / 2
magischequadrat[y][x] = 1
# berechnung des Magischen Quadrates
for i in range (2, eingabe*eingabe+1):
altexwert = x
alteywert = y
# wagerechts verschiebung
y -= 1
if y < 0:
y = eingabe - 1
# senkerecht verschiebung
x += 1
if x > eingabe - 1:
x = 0
# wenn das Feld bestz ist dann ersetzte das alte mit den neuen
if magischequadrat[y][x] > 0:
x = altexwert
y = alteywert + 1
if y == eingabe:
y = 0
magischequadrat[y][x] = i
# ausgeben des Magesches Quadrat
print ''
for lieste in magischequadrat:
print lieste
# Fehlermeldung bei gerader Zahl
else:
# Bei falscher Eingabe Programm beenden:
bilds.clrScr()
bilds.cPuts('falsche Eingabe -> Programm wird beendet!')