AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Summe ausgeben, nur wie?

Ein Thema von Sn00bY · begonnen am 6. Feb 2009 · letzter Beitrag vom 8. Feb 2009
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#11

Re: Summe ausgeben, nur wie?

  Alt 6. Feb 2009, 23:00
Sorry,

ich Knalltüte, wie doof von mir, Natürlich heißt das Sudoku, aber man konnte sich ja denken was ich meine.

Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Sn00bY

Registriert seit: 5. Feb 2009
8 Beiträge
 
#12

Re: Summe ausgeben, nur wie?

  Alt 6. Feb 2009, 23:08
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.
Miniaturansicht angehängter Grafiken
matrix_190.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#13

Re: Summe ausgeben, nur wie?

  Alt 6. Feb 2009, 23:26
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.

Sudoku Löser

Sudoku Auflöser erstellen

Sudoku

MFG

Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Summe ausgeben, nur wie?

  Alt 6. Feb 2009, 23:45
Zitat von Jens Hartmann:
Sorry,

ich Knalltüte, wie doof von mir, Natürlich heißt das Sudoku, aber man konnte sich ja denken was ich meine.

Jens
Sodoku heißt glaube ich in etwa "lesen ohne (es) zu verstehen"
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Sn00bY

Registriert seit: 5. Feb 2009
8 Beiträge
 
#15

Re: Summe ausgeben, nur wie?

  Alt 6. Feb 2009, 23:47
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.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#16

Re: Summe ausgeben, nur wie?

  Alt 6. Feb 2009, 23:58
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.
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Sn00bY

Registriert seit: 5. Feb 2009
8 Beiträge
 
#17

Re: Summe ausgeben, nur wie?

  Alt 7. Feb 2009, 00:03
Danke, dann bis morgen, gehe schlafen ^^
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#18

Re: Summe ausgeben, nur wie?

  Alt 7. Feb 2009, 11:12
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. ) Ein Konstruktionsverfahren für Quadrate mit ungerader Seitenlänge (wie hier) ist unter Wikipedia: Konstruktion magischer Quadrate zu finden - gleich das erste Beispiel ist gut geeignet.

Die Aufgabe besteht also darin, dieses Konstruktionsprinzip in ein Programm umzusetzen. Viel Erfolg!

Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Sn00bY

Registriert seit: 5. Feb 2009
8 Beiträge
 
#19

Re: Summe ausgeben, nur wie?

  Alt 7. Feb 2009, 17:22
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 ^^
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#20

Re: Summe ausgeben, nur wie?

  Alt 7. Feb 2009, 17:34
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:
// 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.
Aber wie es geht, weiß ich nicht, da ich von Delphi schon zu lange weg bin und mit Arrays fast nie gearbeitet habe.

Beschreibung und Kommentare sind natürlich weiterhin notwendig.

Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz