Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Rest einer Division ausgeben


bf109g.01 - Di 23.03.10 21:00
Titel: Rest einer Division ausgeben
Hallo, wie lautet nochmal der Befehl um den Rest einer Division auszugeben.
Bsp: 10/3=1
Danke


BenBE - Di 23.03.10 21:01

mod Siehe Hilfe.


Xearox - Mi 24.03.10 04:14

user profile iconbf109g.01 hat folgendes geschrieben Zum zitierten Posting springen:
Hallo, wie lautet nochmal der Befehl um den Rest einer Division auszugeben.
Bsp: 10/3=1
Danke


das wäre aber 10/3=3 ...


Holg_i - Mi 24.03.10 09:58

Wie gibt es dafür auch ein Befehl... Ich sollte mich wohl echt langsam mal mit den Befehlen auseinander setzen.
Ich würde folgendes tippen


Delphi-Quelltext
1:
r:=x- x div y  *y;                    


F34r0fTh3D4rk - Mi 24.03.10 11:19

Oder mit grundlegender Mathematik: Modulo [http://de.wikipedia.org/wiki/Modulo#Modulo] :mrgreen:
Aber prinzipiell macht Modulo genau das, was du beschrieben hast. Allerdings bin ich mir nicht sicher, wie bei div gerundet wird.
Das sollte auch gehen:

Delphi-Quelltext
1:
r := x - floor(x / y) * y; // Definition von mod                    

Aber so ists kürzer:

Delphi-Quelltext
1:
r := x mod y                    


Xearox - Mi 24.03.10 15:00

ja das mit Mod hab ich mir letztens erst durchgelesen auf Wikipedia...
Also, zunächst war ich richtig verwirrt...aber dann hab ichs verstanden und gedacht, lol, was war denn daran nicht zu verstehen ich depp...


Gammatester - Mi 24.03.10 15:35

user profile iconXearox hat folgendes geschrieben Zum zitierten Posting springen:
ja das mit Mod hab ich mir letztens erst durchgelesen auf Wikipedia...
Also, zunächst war ich richtig verwirrt...aber dann hab ichs verstanden und gedacht, lol, was war denn daran nicht zu verstehen ich depp...

Na ja, ob verstanden oder nicht: jedenfalls ist im deutschen Wiki wieder mal ziemlicher Unsinn:
Zitat:
Ist die Zahl m eine Primzahl oder die Potenz einer Primzahl so kann man die aus den Reellen Zahlen gewohnten Grundrechenarten mit anschließender modulo Berechnung anwenden und erhält einen sogenannten Endlichen Körper.
Der rote Text muß gestrichen werden! Z.B. ist (5 mod 25) sicher nicht (0 mod 25), aber (5 mod 25)*(5 mod 25) = (0 mod 25). Die GF(p^k) sind sind zwar endliche Körper mit p^k Elementen, aber haben sie eine ganz andere multiplikative Struktur.


JoelH - Mi 24.03.10 15:43

user profile iconF34r0fTh3D4rk hat folgendes geschrieben Zum zitierten Posting springen:
Allerdings bin ich mir nicht sicher, wie bei div gerundet wird.

Div rundet immer ab.

Übrigens, mit Mod, Div und Rekursion kann man recht elegant die Column im OpenOffice-Calc (oder Excel, da muss man immer eins weniger mitgeben, als man hat. OO fängt bei 0 an, E bei 1) ermitteln, wenn man Lust hat ;)


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function getColName(col:Integer):String;  
var rueckgabe : String;
begin
  if col < 26 then
    rueckgabe := Chr(col+65)
  else
    rueckgabe := getCol((col div 26)-1) + Chr((col mod 26)+65);
  result := rueckgabe;
end;


Man gibt also z.B. 730 rein und bekommt ABC raus.


Gausi - Mi 24.03.10 16:16

user profile iconGammatester hat folgendes geschrieben Zum zitierten Posting springen:
Na ja, ob verstanden oder nicht: jedenfalls ist im deutschen Wiki wieder mal ziemlicher Unsinn:
Zitat:
Ist die Zahl m eine Primzahl oder die Potenz einer Primzahl so kann man die aus den Reellen Zahlen gewohnten Grundrechenarten mit anschließender modulo Berechnung anwenden und erhält einen sogenannten Endlichen Körper.
Der rote Text muß gestrichen werden! Z.B. ist (5 mod 25) sicher nicht (0 mod 25), aber (5 mod 25)*(5 mod 25) = (0 mod 25). Die GF(p^k) sind sind zwar endliche Körper mit p^k Elementen, aber haben sie eine ganz andere multiplikative Struktur.


Ist zwar nicht direkt das Thema, aber wo ist denn das Problem? Die Aussage bei Wikipedia soll doch wohl sein, dass (5 mod 25) *{im endlichen Körper} (5 mod 25) = (5 *{im reellen} 5mod 25 gilt. Und das ist doch wohl der Fall, oder? Dass das Produkt zweier Elemente ungleich 0 wieder 0 ergeben kann, gibt es bei den reellen Zahlen zwar nicht, aber das stört hier doch nicht, oder?


Gammatester - Mi 24.03.10 16:52

Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.

Nein, Wiki behauptet doch: Die Reste mod m mit den Operationen

Quelltext
1:
2:
(a mod m) + (b mod m) = (a+b) mod m
(a mod m) * (b mod m) = (a*b) mod m
bilden eine Körper. Das wäre zwar besonders interessant für Programmierer usw, weil man man dann mod 2^8, 2^32, 2^64 auch multiplikative Inverse für alle Werte <>0 hätte; leider geht's aber nicht so einfach.


elundril - Mi 24.03.10 18:09

Dann bessere es doch bei Wikipedia aus! (wenn du dich traust :mrgreen:)

lg elundril