Autor |
Beitrag |
busse139
Hält's aus hier
Beiträge: 6
|
Verfasst: Mi 08.06.05 17:55
Hallo! Ersteinmal....bin ein mehr oder weniger absoluter Delphi - Anfänger!
Jetzt meine verzweifelte Frage: Muss für den Informatikunterricht mit Delphi 7 ein Programm erstellen um magische quadrate zu erzeugen. Es soll ein Zahlenbereich von 1-100 vorhanden sein und die Quadrate sollen eine Größe von 3x3, 5x5, 7x7 usw haben, also nur ungerade Seitenlängen! Das erstellte magische Quadrat soll dann über ein Stringgrid Feld ausgegeben werden. Evt auch so mit der Option das über ein Stringgrid Feld Zahlen ausgegeben werden und dann eine Message erscheint ob es magisches Quadrat ist oder nicht.
Wer kann mir da wohl weiterhelfen, bzw mir evt einen fertigen Beispielquellcode (marco.busse@teleos-web.de)schicken??
Das ganze Programm soll nichts dolles werden und möglichst einfach gehalten/programmiert werden.
Wäre echt Super wenn ich da an was passendes kommen würde!
Vielen Dank im vorraus!!!
Marco Moderiert von matze: Topic aus Projekte (Open Source) verschoben am Mi 08.06.2005 um 18:53
|
|
JayK
      
Beiträge: 1013
|
Verfasst: Mi 08.06.05 18:02
Ich weiß nicht, aber wenn das so ne Art Hausaufgabe ist, würde ich es nicht ganz so in Ordnung finden, einfach ein komplettes Prog zu posten, dann hat man doch selber nichts geleitset
Tipps oder Anregungen, sowie Ausschnitte für bestimmte schwierige Stellen im Code fände ich ja OK.
Ich weiß übrigens keine Lösung  ich wollte nur mal meine Meinung einbringen
PS. Ich will jetzt nicht sagen, dass du ein Schummler oder sowas bist busse139, bloß nicht
EDIT: Sorry, hab ich ganz vergessen:  im DF 
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Mi 08.06.05 18:48
Eins vesteh ich nie: Wieso bekommt man im Informatik-Unterricht Hausaufgaben, die man nicht machen kann bzw. wenn man es nicht machen kann, wieso sagt man dass den nicht dem Lehrer?
PS: Wenn das keine Hausaufgaben sind, sry. Aber würd mich trotzem interessieren.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mi 08.06.05 18:57
Hallo und  auch von mir.
Hilft dir das hier weiter? Da wird erklärt, wie man ein magisches Quadrat konstruiert. Die Umsetzung in Delphi geht dann über ein 2-dimensonales Array.
_________________ We are, we were and will not be.
|
|
busse139 
Hält's aus hier
Beiträge: 6
|
Verfasst: Mi 08.06.05 23:10
Hallo! Ihr habt im Prinzip ja recht, aber ich will ja nicht ein Programm haben und das dann einfach so da vorstellen, mich würde nur mal ein fertiges Beispiel interessieren! Bei meiner Aufgabe handelt es sich ausserdem um eine mehr oder weniger freiwillige Arbeit, die dann eben vor der Klasse vorgestellt wird! Also mir gehts nicht darum da irgendwie was hinzuschummeln! (Was so oder so bemerkt werden würde)  (Auch wenn sich das in meiner Frage glaube so anhörte)
Und sicher werde ich dem Lehrer sagen das ich sowas einfach nicht hingekriegt habe, was dann wohl auch nicht weiter schlimm ist. Theoretisch weiss ich ja wie's geht, das ist ja auch schonmal was!  trotzdem würds mich eben interessieren wie sowas programmiert wird! P.S.: jeder hat bei uns ne andere Aufgabe, sodass wenn ichs nicht mache wohl keine fertige Lösung sehe!
Naja, werd versuchen und bei wichtigen Sachen einfach hier nochmal nachfragen! Und vielleicht klappts ja noch mit nem Quelltext sodass ich mir das vorher mal richtig ansehen kann!
auf jeden Fall vorerst schonmal vielen DAnk für die schnellen Antworten! Würde mich über weitere freuen!!
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Do 09.06.05 10:03
Na gut, ich will ja mal nicht so sein. Schließlich sollen die 15 Minuten Arbeit von gestern auch nicht umsonst gewesen sein...
Man beachte auch den Link, den ich weiter oben gepostet habe!
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| procedure create_Quadrat(a:integer; Var quadrat:TQuadrat); var x,y,n:integer; xtmp,ytmp:integer; begin x:=a DIV 2; y:=0; n:=1; Quadrat[x,y]:=n;
repeat xtmp:=(x+1); if xtmp>=a then xtmp:=xtmp-a;
ytmp:=(y-1); if ytmp<0 then ytmp:=ytmp+a;
if Quadrat[xtmp,ytmp]=0 then begin x:=xtmp; y:=ytmp; end else begin end; inc(n); Quadrat[x,y]:=n; until end; |
_________________ We are, we were and will not be.
|
|
busse139 
Hält's aus hier
Beiträge: 6
|
Verfasst: Do 09.06.05 11:21
Danke, Super Sache!
Wird mir auf jeden viel weiterhelfen! Wie gesagt, gucke mir das alles richtig an und werde dann wirklich versuchen meinen eigenen Text zu schreiben!! Werde denn heute Abend richtig loslegen!m
Danke nochmal und nen schönen Tag noch!
mfg
Marco
|
|
busse139 
Hält's aus hier
Beiträge: 6
|
Verfasst: Fr 24.06.05 15:32
Titel: Nochmal Magische Quadrate....Sorry
Hallo. Bin immer noch bei meinen Magischen Quadraten....klappt aber nicht so wie es soll... Wer kann mir da weiterhelfen? Habe folgenden Quelltext, kriege den aber einfach nicht fertig....:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids;
type TForm1 = class(TForm) StringGrid1: TStringGrid; procedure StringGrid1Click(Sender: TObject); private public end; Type tquadrat=ARRAY[1..max,1..max] of Integer; VAR quadrat:tquadrat; Form1: TForm1;
implementation
{$R *.dfm}
procedure create_Quadrat(a:integer; Var quadrat:TQuadrat); var x,y,n:integer; xtmp,ytmp:integer; begin x:=a DIV 2; y:=0; n:=1; Quadrat[x,y]:=n;
repeat xtmp:=(x+1); if xtmp>=a then xtmp:=xtmp-a;
ytmp:=(y-1); if ytmp<0 then ytmp:=ytmp+a;
if Quadrat[xtmp,ytmp]=0 then begin x:=xtmp; y:=ytmp; end else begin end; inc(n); Quadrat[x,y]:=n; until end; |
Muss also wissen ob ich Tquadrat richtig deklariert habe und genau wissen was ich als Abbruchbesdingung bzw als Aushilfplatz schreiben muss!
Wäre Super wenn mir da nochmal einer weiterhilft, für die Schule ists eh zu spät, würds nur interesshalber gerne wissen!
Moderiert von raziel: Delphi-Tags hinzugefügt und Topics zusammengeführt.
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Fr 24.06.05 16:19
Hallo,
Ich hab meinen Quelltext grad nicht zur Hand, der schlummert irgendwo auf ner Platte, die grad nicht am Rechner dranhängt...Aber:
Wenn ich mich recht entsinne, hatte ich type tquadrat = Array of Array of integer als dynamisch angenommen. Die Größe des gewünschten magischen Quadrates hab ich aus nem Editfeld eingelesen, und dann das Array entsprechend bei Click auf einen Button initialisiert und dann die Prozedur aufgerufen. Besser wäre es aber wahrscheinlich noch, wenn man die Initialisierung des Arrays mit in die Prozedur aufnehmen würde, und der Prozedur nur den Parameter a (Größe des Quadrates) übergeben würde..
Zum Ausweichplatz: Hier war doch irgendwo ein Link zu Wikipedia. Da wird beschrieben, wie das Quadrat gefüllt wird. Schau da nochmal nach.
Und die Abbruchbedingung: In jedem Durchgang der Schleife wird die Zahl n um eins erhöht, und diese Zahl wird in ein Feld des Quadrates geschrieben. Man startet bei n=1. Quizfrage ist: wann ist man mit Füllen des Quadrates mit Kantenlänge a fertig?
_________________ We are, we were and will not be.
|
|
busse139 
Hält's aus hier
Beiträge: 6
|
Verfasst: Fr 24.06.05 16:27
Hm, ehrlich gesagt komme ich so auch nicht wirklich weiter!
ich sollte es wahrscheinlich einfach lassen mit Delphi!
Naja, wenn sowas einer vielleicht noch richtig ausformuliert hat odser gar nen ganz neuen Source Code für Magische Quasdrate dann bitte bitte melden!
Aber trotzdem Danke!!
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Fr 24.06.05 17:11
hmmm....es ist zwar sehr heiss, aber das sollte jetzt nicht so schwer sein. Was verstehst du denn noch nicht? Die Abbruchbedingung, den neuen platz, oder das initialisieren des Quadrates, oder die Benutzung der Prozedur?
_________________ We are, we were and will not be.
|
|
busse139 
Hält's aus hier
Beiträge: 6
|
Verfasst: Fr 24.06.05 17:22
Also vor allem die Benutzung der Prozedur und das initialisieren des Quadrates...?!
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Fr 24.06.05 17:34
Das geht z.B. so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.Button1Click(Sender: TObject); var Quadrat:TQuadrat; a,i,x,y:integer; begin a:=strtoint(edit1.Text);
setlength(Quadrat,a); for i:=0 to a-1 do setlength(Quadrat[i],a);
create_Quadrat(a,Quadrat);
StringGrid1.RowCount:=a; StringGrid1.ColCount:=a; for x:=0 to a-1 do for y:=0 to a-1 do StringGrid1.Cells[x,y]:=inttostr(Quadrat[x,y]) end; |
_________________ We are, we were and will not be.
|
|
|