AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein möchte modulo (Teilen) function neu programmieren
Thema durchsuchen
Ansicht
Themen-Optionen

möchte modulo (Teilen) function neu programmieren

Ein Thema von Coder · begonnen am 8. Jan 2005 · letzter Beitrag vom 8. Jan 2005
Antwort Antwort
Benutzerbild von Coder
Coder

Registriert seit: 27. Feb 2004
Ort: Bochum
203 Beiträge
 
Delphi 3 Professional
 
#1

möchte modulo (Teilen) function neu programmieren

  Alt 8. Jan 2005, 12:49
Hallo
Ich wollte die "mod" function nachprogrammieren..

aber irgendwie kommen da falsche Ergebnisse.


Delphi-Quellcode:
function mody(Zahl :longint; Teiler :longint): longint;
var fix3 : longint;
runden1 ,runden2, Fix2,Fix1, erst: real;
begin
erst := Zahl / Teiler;
Fix1 := (erst - round(erst));
fix2 := (Fix1 * Teiler);
runden1 := fix2 - round(fix2);
runden2 := runden1 * 10;
If runden2 > 5 Then Fix3 := round(fix2) + 1;
If runden2 <= 5 Then Fix3 := round(fix2);
result := Fix3;
end;

----------

habt Ihr eine Idee woran das liegt?

oder gibt es evtl source zu so einer Funktion?

[edit=Admin]Code in Delphi-Tags gesetzt. Künftig bitte selber machen. Mfg, Daniel[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: möchte modulo (Teilen) function neu programmieren

  Alt 8. Jan 2005, 12:51
hi,

aber wozu willst du das rad neu erfinden? in delphi gibt es doch die mod() funktion.
und außerdem, nächstes mal bitte die [delphi]-tags benutzen, dann wird dein code schln formatiert und man kann ihn besser lesen

Aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#3

Re: möchte modulo (Teilen) function neu programmieren

  Alt 8. Jan 2005, 12:57
Wieso so kompliziert? Den Modulo berechnet man einfacher mit:

Zahl - (Zahl div Teiler) * Teiler
  Mit Zitat antworten Zitat
Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#4

Re: möchte modulo (Teilen) function neu programmieren

  Alt 8. Jan 2005, 18:00
Zitat von Coder:
oder gibt es evtl source zu so einer Funktion?
den gibt mit sicherheit irgendwo, aber wozu, wenn man schonmal im binärsystem dividieren musste (wenn schon für nix anderes ist informatikunterricht zumindest dafür gut ), ist es eigentlich recht einfach, eine mod funktion (bzw. div, da beides in einem rutsch berechnet wird) nachzuprogrammieren.

Dazu muss man lediglich wissen, dass im binärsystem ausgehend vom höchstwertigsten bit des dividenten, die zahl der der abzufragenden bits immer weiter erhöhend, auf den wert des divisors überprüft wird, sollte dieser erreicht oder überschritten sein wird er abgezogen und es wird weitergerechnet. das könnte z.B. so aussehen:
Delphi-Quellcode:
procedure _shld(var Dest,Source: Cardinal);
begin
  Dest := Dest shl 1;
  Dest := Dest or Byte( (Source and $80000000) > 0 );
  Source := Source shl 1;
end;

function _Mod(Dividend,Divisor: Cardinal): Cardinal;
var Count: Byte;
begin
  Result := 0;
  Count := 32; // 31 bits, also 31 mal schieben
  repeat
    _shld(Result,Dividend); // schiebe nächstes bit in result
    if Result >= Divisor then // s.o., bedingung erfüllt?
      Result := Result - Divisor; // falls ja, divisor abziehen
    Dec(Count);
  until Count = 0;
end;
und @Aenogym:
klar, wozu das rad neuerfinden, aber wenn man verstehen will was im rechner passiert wenn man (X mod Y) irgendwo hinschreibt isses manchma unabdinglich
if ThisPost is senseless then
ThisPost.WasPostedBy := SomeoneElse();
  Mit Zitat antworten Zitat
Antwort Antwort


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 11: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