![]() |
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:35 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