![]() |
Summe ausgeben, nur wie?
Hab die hälte hinter mir:
Code:
Wie bringe ich es jetzt dazu, die Gesamte Summe des Feldes (notwendig für die einzelnen Summen der Waage-/ Senkrechten und einer Diagonalen [Summe / n] auszugeben
type TFeld = array of array of integer;
var Feld : TFeld; n, ZS, z, s : integer; begin ZS := 0; write ('Wie gross soll der Wuerfel sein? '); readln (n); Setlength(Feld,1,n); for z:=1 to n do begin writeln; writeln; writeln; for s:= 1 to n do begin ZS:= ZS + 1; write ('| ',ZS:4); end; end; readln; UND es von alleine so anzuordnen, damit überall die "kleine" Summe gleich ist. Bitte um rat. |
Re: Summe ausgeben, nur wie?
Hallo erstmal,
Was genau suchst Du, ich verstehe überhaupt nicht deine Frage MFG Jens |
Re: Summe ausgeben, nur wie?
Also, stell dir ein Quadrat vor, das 3 mal 3 Felder hat, in jedem Feld ist ist eine Zahl
123 456 789 Man kann die zahlen so tauschen, das jede Waagerechte, jede Senkrechte und eine Diagonale die Gleiche Summe hat. 1+2+3+4+...+9 = 45 45 / 3 = 15 (Summe jeder Waage-/ Senkrechte und 1 Diagonalen) Jetzt soll mir das Programm die zahlen so ausgeben, damit es in Etwa so aussieht 1 9 5 = 15 6 2 7 = 15 8 4 3 = 15 |
Re: Summe ausgeben, nur wie?
Zitat:
Was für eine Summe meinst du? Was ist die kleine Summe? Das kann niemand verstehen! Was mir auffällt: Du hast ein zweidimensionales Feld definiert, das in der Größe vermutlich falsch festgelegt wurde. Ich nehme doch mal an, dass es in allen Dimensionen gleich groß sein soll, oder? (Siehe SetLength-Anweisung) Dann fragst du nach der Größe eines Würfels, also eines dreidimensionalen Objekts ... passt das zusammen? Ich glaube nicht! Im übrigen wurde das Feld noch nicht einmal gefüllt, das sollte natürlich passieren, bevor man irgendwelche Summen bilden kann. Vielleicht solltest du erst mal kleine Brötchen backen und mit eindimensionalen Feldern rumprobieren, bis du dir da sicher bist, was du machst? Danach kommt eine zweite Dimension dazu, dann die dritte. Ich habe das zumindest in dieser Reihenfolge gemacht und bin damit ganz gut gefahren. Ich kann dir das nur raten ... |
Re: Summe ausgeben, nur wie?
gleiche frage wie hier:
![]() |
Re: Summe ausgeben, nur wie?
Also wenn ich das jetzt richtig verstanden habe, kann der Würfel auch 4x4 oder 5x5 Felder haben, Über die Summe der Zahlen möchtest du die Größe des Würfels?? berechnen.
Ich denke eher du suchst sowas wie SODOKU, oder? Ändere meine antwort, die Frage steht im Tread von Meflin.... MFG Jens |
Re: Summe ausgeben, nur wie?
Ja, sowas wie SODOKU, (wir haben in der schule nur Würfel dazu gesagt)
Das programm soll quasi sodku spielen, damit jede Zeile und jede spalte die gleiche summe hat. |
Re: Summe ausgeben, nur wie?
Gib mal einfach Soduko im Suchbereich ein und du wirst fündig.
Viel Glück Jens |
Re: Summe ausgeben, nur wie?
Noch mal zum letzten Beitrag von eben.
![]() Es ist richtig, das es kein Soduko ist, aber er sucht nach einem Würfel (3x3 Felder sind allerdings kein Würfel) der in allen Richtungen das selbe Ergebnis aufweißt. Gut da kommt die Diagonale zu, aber ein Ansatz durch Soduko sollte schon da sein. Oder? Jens |
Re: Summe ausgeben, nur wie?
Bei der Suche nach Sodoku oder Soduko wirst du nichts finden. Das Dingenkirchen heißt Sudoku
|
Re: Summe ausgeben, nur wie?
Sorry,
ich Knalltüte, wie doof von mir, Natürlich heißt das Sudoku, aber man konnte sich ja denken was ich meine. :gruebel: Jens :wall: |
Re: Summe ausgeben, nur wie?
Liste der Anhänge anzeigen (Anzahl: 1)
Also, ich hab gesucht, aber nichts richtiges gefunden.
Ich hab mal so weiter versucht, bisl erfweitert und bin jetzt so weit (siehe Bild) Da seht ihr, wie ich es bis jetzt ausgegeben bekommen. Wenn ihr jetzt die erste Zeil zusammenrechnet, bekommt ihr die Summe 15 raus. In der zweiten die Summe 40. Ich möchte jetzt aber, dass das programm nach der Eingabe der Feldanzahl sofort mir die zahlen so anordnet, das überall die Summe 65 (in diesem Fall) ist. |
Re: Summe ausgeben, nur wie?
Also ich habe jetzt grad mal ein bißchen im Forum gestöpert,
schau mal bitte nach ob du mit diesen Links was anfangen kannst. ![]() ![]() ![]() MFG Jens |
Re: Summe ausgeben, nur wie?
Zitat:
|
Re: Summe ausgeben, nur wie?
Danke für die posts Jens, nur die helfen mir nicht wirklich weiter!
Sudoku is auf dem prinzip aufgebaut, das in jeder spalte und zeile nur die zahlen 1 bis 9 vorkommen, bei mir jedoch zB. die zahlen 1 bis 25 auf dem kompletten feld verteilt werden. :( |
Re: Summe ausgeben, nur wie?
Sorry,
Dann weiß ich momentan auch nicht so recht, werde mal ein bißchen probieren. MFG Jens PS: Danke "inherited" für deine schlauen Sprüche, aber wirklich helfen tust du auch nicht. |
Re: Summe ausgeben, nur wie?
Danke, dann bis morgen, gehe schlafen ^^
|
Re: Summe ausgeben, nur wie?
Hallo,
in dem anderen (inzwischen geschlossenen) Thread wurde das richtige Stichwort Magisches Quadrat gegeben. (Wie kann man nur auf die völlig abwegige Idee kommen, ein zweidimensionales Ding "Würfel" zu nennen. :roll: ) Ein Konstruktionsverfahren für Quadrate mit ungerader Seitenlänge (wie hier) ist unter ![]() Die Aufgabe besteht also darin, dieses Konstruktionsprinzip in ein Programm umzusetzen. Viel Erfolg! Jürgen |
Re: Summe ausgeben, nur wie?
Hallo Jürgen, ich hab gefunden, was ich gesucht habe, dank dir.
Jetzt hab ich nur noch ein Problem: In dem Programm was ich geschrieben hab, konnte ich per Eingabe festlegen, wie groß das quadrat sein soll. Dies geht jetzt leider nicht, obwohl ich es mit write ('blabla'); readln (n); Setlength(quadrat,1,n); dazu bringen wollte. hier der Code:
Delphi-Quellcode:
program magisch_quadrat;
{$APPTYPE CONSOLE} uses SysUtils; const ord=6; //soll wegfallen var quadrat, matrix1, matrix2 : array[1..ord, 1..ord] of integer; // array[1..ord, 1..ord] soll zu array of array of integer werden i, j : integer; // n : integer procedure odd; var x, y, anz :integer; begin // hier müsste jetzt write ('blabla'); readln (n); // Setlength(quadrat,1,n); x:=(ord+1) div 2; y:=1; anz:=0; for i:=1 to (ord*ord) do begin quadrat[x, y]:=i; inc(anz); if (anz mod ord=0) then inc(y) else begin if (x=ord) then x:=1 else inc(x); if (y=1) then y:=ord else dec(y); end; end end; procedure oddmod2; var x, y, anz, zw : integer; begin x:=(ord div 2+1) div 2; y:=1; anz:=0; for i:=1 to (ord*ord div 4) do begin quadrat[y, x]:=i; inc(anz); if (anz mod (ord div 2)=0) then inc(y) else begin if (x=ord div 2) then x:=1 else inc(x); if (y=1) then y:=ord div 2 else dec(y); end; end; x:=(ord div 2+1) div 2 +(ord div 2); y:=1+(ord div 2); anz:=0; for i:=1 to (ord*ord div 4) do begin quadrat[y, x]:=i+(ord*ord div 4); inc(anz); if (anz mod (ord div 2)=0) then inc(y) else begin if (x=ord) then x:=ord div 2 +1 else inc(x); if (y=ord div 2 +1) then y:=ord else dec(y); end; end; x:=(ord div 2+1) div 2 +(ord div 2); y:=1; anz:=0; for i:=1 to (ord*ord div 4) do begin quadrat[y, x]:=i+2*(ord*ord div 4); inc(anz); if (anz mod (ord div 2)=0) then inc(y) else begin if (x=ord) then x:=ord div 2+1 else inc(x); if (y=1) then y:=ord div 2 else dec(y); end; end; x:=(ord div 2+1) div 2; y:=1+(ord div 2); anz:=0; for i:=1 to (ord*ord div 4) do begin quadrat[y, x]:=i+3*(ord*ord div 4); inc(anz); if (anz mod (ord div 2)=0) then inc(y) else begin if (x=ord div 2) then x:=1 else inc(x); if (y=ord div 2+1) then y:=ord else dec(y); end; end; for i:=1 to (ord div 3) do begin zw:=quadrat[i, i]; quadrat[i, i]:=quadrat[ord div 2+i, i]; quadrat[ord div 2+i, i]:=zw; if (i<>ord div 3) then begin zw:=quadrat[ord div 2+1-i, i]; quadrat[ord div 2+1-i, i]:=quadrat[ord+1-i, i]; quadrat[ord+1-i, i]:=zw; end; end; end; procedure mod4; var a, b, erg, zw : integer; begin zw:=ord div 4; for i:=1 to ord do for j:=1 to ord do begin a:=((i-1) div (zw)); b:=((j-1) div (zw)); erg:=a*4+b+1; case erg of 1, 4, 6, 7, 10, 11, 13, 16: quadrat[i, j]:=(i-1)*ord+j; else quadrat[ord+1-i, ord+1-j]:=(i-1)*ord+j; end; end; end; procedure ausgabe; begin for i:=1 to ord do begin for j:=1 to ord do Write(quadrat[i, j]:3); Writeln; end; Readln; end; begin if (ord mod 4=0) then mod4 else if (ord mod 2=1) then odd else oddmod2; ausgabe; end. bitte um ideen ^^ |
Re: Summe ausgeben, nur wie?
Hallo,
bitte ändere Deinen Code auf "Delphi-Code". Ergänze das Ganze mit einer Beschreibung und Kommentaren, damit jeder sieht, was Du Dir vorgestellt hast, und nicht raten muss. Und wofür willst Du Ideen haben? Wie es variabel gestaltet werden soll? (Dann musst Du die Abfrage vor allem einbauen an den Anfang der Haupt-Prozedur des Programms.) Oder was? Jürgen /Edit Ich habe jetzt die Änderungen gelesen. So wird es nichts; sondern so musst Du vorgehen:
Delphi-Quellcode:
Aber wie es geht, weiß ich nicht, da ich von Delphi schon zu lange weg bin und mit Arrays fast nie gearbeitet habe.
// nicht hier:
procedure odd; var x, y, anz :integer; begin // hier müsste jetzt write ('blabla'); readln (n); // Setlength(quadrat,1,n); usw. end; // sondern hier: begin // hier müsste jetzt write ('blabla'); readln (n); // Setlength(quadrat,1,n); if (ord mod 4=0) then mod4 else if (ord mod 2=1) then odd else oddmod2; ausgabe; end. Beschreibung und Kommentare sind natürlich weiterhin notwendig. Jürgen |
Re: Summe ausgeben, nur wie?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Sn00bY,
wie versprochen, habe ich mir gedanken gemacht. In dem Beispiel Projekt, ist ein magisches Quadrat für ungerade Zahlen und in dem Link findest du ein Projekt zu allen Magischen Quadraten. Das magische Quadrat für Gerade Zahlen und soweiter ist schon etwas komplizierter. Aber der Link ist inkl. Projekt etc. ![]() Ach übrigens, gib mal im DF und hier bei DP Magisches Quadrat in der Suche ein und du wirst noch mehr finden. MFG Jens |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz