Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi frage zu einem programmcode... (https://www.delphipraxis.net/64490-frage-zu-einem-programmcode.html)

KosMottchen 4. Mär 2006 00:42


frage zu einem programmcode...
 
huhu,

hab in der schule ne aufgabe aufbekommen...

hab die mal hier hochgeladen als bild

http://img75.imageshack.us/img75/856/lastscan27ie.jpg

den qellcode hab ich mal schon gemacht und wollt gerne wissen, ob des richtig so ist...

ich werd das ganze wohl als oneclick machen, aber das ist ja erstmal egal...

ich hoffe ihr könnt die schrift von meinem lehrer lesen...

is ne formel zur berechnung, an welchem tag man geboren ist...

kommt am ende ne zahl von 1 bis 7 raus und welcher tag da was ist, kann sich ja jeder denken ;o)

ich bin mir nur mit der variablenzustellung nich so sicher, welche nun real sein sollen und welche integer und eben, ob ich das alles richtig umgesetzt habe mit den ganzen ausnahmen für die formel...

ich danke euch allen schonmal im vorraus

Code:
var
z, t, m, j, Jh,a,b,c,d:real;
code:integer;
s:string;

begin


VAL (form1.edit1.text, t, code);            // einlesen von t
VAL (form1.edit2.text, m, code);            // einlesen von m
VAL (form1.edit3.text, j, code);            // einlesen von j
VAL (form1.edit4.text, Jh, code);            // einlesen von Jh

j:=j MOD 100                    // wichtig für jahr j

Jh:=Jh MOD 100          // wichtig für jahrhundert Jh



a:=((m+1)*26) DIV 10                                    // teil a der gleichung berechnen

b:=(5*j) DIV 4                                               // teil b der gleichung berechnen

c:=Jh DIV 4                                                     // teil c der gleichung berechnen

d:=(2*Jh)-1                                                     // teil c der gleichung berechnen

z:=((t+a+b+c)-d) MOD 7                                // formel zur berechnung der „Tagnummer“

if m=1               
 then m:=13;

// januar umrechnen in m:=13

if m=2
 then m:=14;

// februar umrechnen in m:=14

if m=1
 then j:=j-1;

// wenn januar dann jahr :=j-1

if m=2
 then j:=j-1

// wenn februar dann jahr :=j-1

if z:=((t+a+b+c)-d) MOD 7=-z
 then z+7;

// wenn ((t+a+b+c)-d) MOD 7  negativ, dann Tagesummer z um 7 erhöhen

if j=-1
 then j:=99;

if j:=-1
 then Jh:=Jh-1;

str (z:2:10,s);
form1.edit5.text:=s;

end;

Hansa 4. Mär 2006 01:10

Re: frahe zu einem programmcode...
 
Grobe Einschätzung : der Code ist nicht von Deinem Lehrer. 8) Welcher Monat hat 26 Tage ? :shock: Und was soll der Rest ? Sieht etwas seltsam aus. Irgendein Dummer wird das schon für Dich erledigen. :mrgreen:

fLaSh11 4. Mär 2006 05:54

Re: frahe zu einem programmcode...
 
Zitat:

Zitat von KosMottchen
Code:
z:=((t+a+b+c)-d) MOD 7

Man kann dem mod doch nur ne Ganzzahl übergeben, oder sehe ich des falsch? :gruebel:

Die Muhkuh 4. Mär 2006 07:10

Re: frahe zu einem programmcode...
 
Zitat:

Zitat von fLaSh11
Zitat:

Zitat von KosMottchen
Code:
z:=((t+a+b+c)-d) MOD 7

Man kann dem mod doch nur ne Ganzzahl übergeben, oder sehe ich des falsch? :gruebel:

Das werden ja schon Ganzzahlen sein, ansonsten wird gerundet ;-)

Sharky 4. Mär 2006 07:23

Re: frahe zu einem programmcode...
 
Hai KosMottchen,

erst einmal: "Herzlich Willkommen in der Delphi-PRAXiS" :hi:

Zu den Berechnungen haben ja andere schon etwas gesagt.
Aber Du hast auch "logik" Fehler im Code

Delphi-Quellcode:
.
.
if m=1 then m:=13;
// januar umrechnen in m:=13

if m=2  then m:=14;
// februar umrechnen in m:=14

if m=1  then j:=j-1;
// wenn januar dann jahr :=j-1

if m=2  then j:=j-1
.
.
Bei der ersten IF-Abfrage prüfst Du ob m=1 ist und setzt die Variable dann auf 13. Dadurch wird die nächste Abfrage auf m=1 natürlich nie mehr zutreffen. Das sebe gilt für m=2.

Du musst die Operationen also in eine Abfrage packen:
Delphi-Quellcode:
begin
  .
  if (m = 1) then
  begin
    m := 13;
    j := j - 1;
  end;
  if (m = 2) then
  begin
    m := 14;
    j := j - 1;
  end;
end;
Das nur als anmerkung zu deinen IF-Abfragen. Über die Richtigkeit der Berechnungen möchte ich damit nichts sagen ;-)

KosMottchen 4. Mär 2006 08:53

Re: frahe zu einem programmcode...
 
gutem morgen,

dann sag ich schonmal danke dafür und werde das gleich mal umändern und dann mal versuchen zu starten, was mir nur leider hier unter linux nich möglich ist... :(

@ hans:

die aufgabe is vom lehrer, aber der code is von mir... den habe ich schon gemacht, da ich ja nich verlangen kann, dass ihr mir hier den gesamten code präsentiert ;o)

ich wollt wie gesagt nur wissen, obs richtig so ist ;o)

mfg halloween

Angel4585 4. Mär 2006 09:03

Re: frahe zu einem programmcode...
 
wenn du mit linux arbeitest versuch doch das ganze mal in C zu programmieren und ändere es danach einfach in Delphi um

fLaSh11 4. Mär 2006 09:09

Re: frahe zu einem programmcode...
 
hab den Code mal ausprobiert, mit Round vor dem mod, wos nötig ist.
Für heute kam der richtige Tag raus :-D ,
nur sonst wars falsch... :stupid:

KosMottchen 4. Mär 2006 09:28

Re: frahe zu einem programmcode...
 
Zitat:

Zitat von fLaSh11
hab den Code mal ausprobiert, mit Round vor dem mod, wos nötig ist.
Für heute kam der richtige Tag raus :-D ,
nur sonst wars falsch... :stupid:

huhu,

danke, dann werd ich mir da mal nen kopf machen, bzw mein infolehrer^^

@Angel4585:

das prob is ja.. ich lern gard seit 3 monaten delphi in der schule... da hab ich noch keinen plan, wie ich was in c schreibe und dann einfach in delphi umwandle...

dass ich mit c unter linux was machen kann, das weiß ich ja, weil ich mich mal infomiert habe, obs mit delphi unter linux geht... aber dem is ja leider nicht so :(

fLaSh11 4. Mär 2006 09:38

Re: frage zu einem programmcode...
 
dazu nimmst du am besten kylix :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:14 Uhr.
Seite 1 von 2  1 2      

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