Autor Beitrag
tetley
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 11.11.04 09:36 
Hallo zusammen,
Eins Vorweg, ich habe so gut wie nichts mit Delphi zu tun.
Ich programmiere derzeit ein Projekt in Visual-Basic, nun stand ich vor einem Problem mit einer Formel für eine Fahrzeitenberechnung eines Browserspiels.
Schließlich fand ich ein OpenSource Projekt welche genau diese Funktion hat, im Quelltext nachgeschaut stieß ich auf folgende relevanten Zeilen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
if ziel > start then
        begin
          laenge := ziel - start;
          if ziel - start < 10 then laenge := ziel - start
          else 
            laenge := laenge mod 10 + laenge div 10//<---
        end;
        if ziel < start then
        begin
          laenge := start - ziel;
          if start - ziel < 10 then laenge := start - ziel
          else 
            laenge := laenge mod 10 + laenge div 10//<---
        end;


Alles soweit verständlich, nur weiß ich nicht welche Funktionen die Befehle "mod" und "div" haben, aber genau diese Zeile brauch ich - als mathematische Formel :)
Ich war mir nicht sicher ob das Variablen sind oder feste Befehle, habe aber nichts mehr diesbezüglich gefunden.
Wäre sehr dankbar um Hilfe!
MfG,
Steffen

Moderiert von user profile iconUGrohne: Delphi-Tags hinzugefügt.
bms
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: Do 11.11.04 09:53 
Schön, daß du hier im Delphi-Forum ein Aufruf an alle Delphi-Programmierer losschikst. Ja, es könnten auch paar VB Programmierer hier sein.

Dein Titel ist so daneben, daß du wahrscheinlich eine Mitteilung von den Modereatoren kriegst und sich etliche Leute aufregen werden, weil der Titel nichstaussagend ist. Wurde er so klingen:

Hilfe. Was ist bitteschön MOD oder DIV in Delphi?

Ja, damit könnte man leben. Dann würdes du sofort die Antwort kriegen, daß es zwei matematische Operatoren sind.

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(
tetley Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 11.11.04 10:17 
hui.. wofür man heutzutage alles einen Anmotzer bekommen kann :D
mat. Operatoren?
unter div könnt ich mir ja noch was vorstellen aber zu mod fällt mir gerade keine Idee ein.
Ich werd mal googlen, hoffe aber auch hier ne Antwort zu bekommen, danke :wink:

Edit:
Ok hab rausgefunden
div = Integerdivision
mod = Rest (also nur die nachkommazahl ist wichtig)

Moderiert von user profile iconUdontknow: Beiträge zusammengefasst.
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Do 11.11.04 10:45 
Hallo!

Ändere bitte den Titel, der ist wirklich nicht sehr aussagekräftig. :wink: Einfach den ersten Beitrag editieren. Danke.

Cu,
Udontknow
Pille
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 105

Windows 7
DelphiXE Prof.
BeitragVerfasst: Do 11.11.04 12:42 
tetley hat folgendes geschrieben:

mod = Rest (also nur die nachkommazahl ist wichtig)


mod steht für Modulo, Ganzzahliger Rest einer Division.

Pille
heinze
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 112

XP
D4 Prof
BeitragVerfasst: Do 11.11.04 13:22 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
i,i2:integer;
.
.
.
i:=7;
i2:=i div 3  // ergibt 2 weil 3 ja 2 mal reinpasst
i2:=i mod 3  // ergibt 1 also den rest


Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.

_________________
Für Fehler haftet die Tastatur bzw Für Gramatik ist meine legasthenie zu verklagen sonstige Verbesserungsvorschläge meiner Text bitte per pn an mich
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Do 11.11.04 13:23 
tetley hat folgendes geschrieben:
Alles soweit verständlich, nur weiß ich nicht welche Funktionen die Befehle "mod" und "div" haben, aber genau diese Zeile brauch ich


Delphi: mod
VB: Mod

Delphi: div
VB: \

Hoffe das reicht als Antwort.

_________________
Ciao, Sprint.
minnime
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 171

Win 7
Delphi Prism 2011, C# (VS 2010)
BeitragVerfasst: Do 11.11.04 14:00 
Kann es sein dass der dargestellte Algo auch nicht ganz super ist, ich meine das geht auch einfacher:
ausblenden Delphi-Quelltext
1:
2:
3:
if ziel > start then laenge := ziel - start
else
 laenge := start - ziel;


Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Do 11.11.04 14:05 
@tetley: Nochmal, ändere bitte Deinen Titel um. Warum, weshalb und wie hat dir Udontknow bereits geschrieben!
MartinPb
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 698



BeitragVerfasst: Do 11.11.04 14:49 
DIV ist die Integerdivision.

7 / 2 ergibt 3,5

7 div 2 ergibt 3

Der Nachkommawert wird bei DIV nicht nur ignoriert, sondern die ganze Berechnung wird zu einer Integerberechnung, die ein Integerwert lefert. Du kannst nicht

ausblenden Delphi-Quelltext
1:
2:
3:
4:
var
  i: Integer;
begin
  i := 7 / 3;


nehmen, weil i ein Integer ist. Du mußt also DIV nehmen.

MOD ist Modulo.

7 mod 2 ergibt 1 weil

7 - ((7 div 2) * 2) eben 1 ergibt.

45 mod 6 ergibt 3 weil

45 - ((45 div 6) * 6) eben 3 ergibt.

Wenn man 45 div 6 oder 45 / 6 berechnet, dann liefert 45 div 6 keine Nachkommawerte. Allerdings gibt es bei dieser Berechnung Verluste, weil 45 div 6 Ergebnis 7 liefert und 42 div 6 auch Ergebnis 7 liefert. MOD gibt also den Verlust (oder Restwert) einer eventuellen DIV Berechnung, also die Summe die bei der DIV Berechnung nicht beachtet wird, weil es Nachkommawerte liefern würde.

_________________
Gruß
Martin