Einzelnen Beitrag anzeigen

Benutzerbild von Dano
Dano

Registriert seit: 12. Aug 2004
49 Beiträge
 
#70

Re: Unbegrenzt viele Nachkommastellen

  Alt 9. Okt 2004, 02:02
hi Hagen

sorry das die antwort so lange warten ließ, aber das RL fordert meine ganze zeit

also:
ich habe mal fix ein demoprogramm gemacht wo einmal mit
function NRoot(var A,R: IInteger; const B: IInteger; E: Integer): Boolean; overload;
die wurzel + rest gebildet wird und dann eine gegenrechnung zur prüfung
das ist alles was mit "1." im memo erscheint


und dann einmal mit
function NRoot(var A: IInteger; const B: IInteger; E: Integer): Boolean; overload;
wo ich den rest selber bilde indem ich die wurzel wieder potenziere und von ausgangswert subtrahiere
und eine gegenrechnung zur prüfung mache
das ist "2." im memo

Delphi-Quellcode:
unit Unit1;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
   Form1: TForm1;

implementation

{$R *.dfm}

uses NInts;

// unsere eigene formatkonstante....
const
    NStrFormatTT: TStrFormat = (
    Base: 16;
    Plus: '';
    Minus: '-';
    Zero: '';
    Comma: ',';
    DigitsPerBlock: 0;
    BlockSep: ' ';
    BlockPadding: ' ';
    DigitsPerLine: 0;
    LineSep: #13#10;
    LinePadding: ' ';
    DigitsChars: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/';
    FormatChars: ' /\-+;:#~"()[]?_<>!§$%&{}'''#13#10#9;
    LeftAlign: False;
    Offset: 0;
    Precision: 0;
    );

procedure TForm1.Button1Click(Sender: TObject);
var
  IIWurzel1,IIRest1: IInteger;
  IIWurzel2,IIRest2: IInteger;
  IIData,IINewData: IInteger;
   Bits,Count: Integer;

begin
   Bits:=$ff; //Länge in bits
   NRnd(IIData,Bits); //Zahl Generieren

  //schleife um 255 mal die wurzel zu ziehen
  for Count:=1 to $FF do begin

    Memo1.Lines.Add('');
    Memo1.Lines.Add('');
    Memo1.Lines.Add(IntToStr(Count)+'-('+IntToHex(Count,2)+')te Wurzel ---------');
    Memo1.Lines.Add('0. Zahl : '+NStr(IIData,NStrFormatTT));
    Memo1.Lines.Add('');

    // 1. die wurzel ziehen und das ergebnis + rest anzeigen
    NRoot(IIWurzel1,IIRest1,IIData,Count);
    Memo1.Lines.Add('1. Ergebnis : '+NStr(IIWurzel1,NStrFormatTT));
    Memo1.Lines.Add('1. Rest : '+NStr(IIRest1,NStrFormatTT));

    //gegenrechnen..... potenz bilden + rest addieren und anzeigen
    NPow(IINewData,IIWurzel1,Count);
    NAdd(IINewData,IIRest1);
    Memo1.Lines.Add('1. Prüfung : '+NStr(IINewData,NStrFormatTT));


    // der 2. lange/andere weg
    // die wurzel ziehen und das ergebnis + rest anzeigen
    NRoot(IIWurzel2,IIData,Count);
    NPow(IINewData,IIWurzel2,Count);
    NSub(IIRest2,IIData,IINewData);
    Memo1.Lines.Add('');
    Memo1.Lines.Add('2. Ergebnis : '+NStr(IIWurzel2,NStrFormatTT));
    Memo1.Lines.Add('2. Rest : '+NStr(IIRest2,NStrFormatTT));

    //gegenrechnen..... potenz bilden und rest addieren und anzeigen
    NPow(IINewData,IIWurzel2,Count);
    NAdd(IINewData,IIRest2);
    Memo1.Lines.Add('2. Prüfung : '+NStr(IINewData,NStrFormatTT));

  end;
end;

end.
also button und memo ist klar.... also brauchst nur den button-event + die format-const kopieren

Zitat:
33-(21)te Wurzel ---------
0. Zahl : 5EC275847C9568C0F6998624E8F5DBC9F9758AA33D5E7A398D 0F808AE024E781

1. Ergebnis : D1
1. Rest : C65A03E5049A58BE0EB105020E815EFEFA99A0E3A4D3FD449A D2490E18728F
1. Prüfung : 51F1890A395EC0F891CC6914EC61F25E4BAA985176F3B502C8 FF97535AC61D60

2. Ergebnis : D1
2. Rest : D97467E283B422122DBCE14FEA26ACAACC58BF2AA0F993408A ABB8093773CB0
2. Prüfung : 5EC275847C9568C0F6998624E8F5DBC9F9758AA33D5E7A398D 0F808AE024E781


81-(51)te Wurzel ---------
0. Zahl : 5EC275847C9568C0F6998624E8F5DBC9F9758AA33D5E7A398D 0F808AE024E781

1. Ergebniss : 8
1. Rest : 1F75847C9568C0F6998624E8F5DBC9F9758AA33D5E7A398D0F 808AE024E781
1. Prüfung : 2775847C9568C0F6998624E8F5DBC9F9758AA33D5E7A398D0F 808AE024E781

2. Ergebniss : 8
2. Rest : 5EBA75847C9568C0F6998624E8F5DBC9F9758AA33D5E7A398D 0F808AE024E781
2. Prüfung : 5EC275847C9568C0F6998624E8F5DBC9F9758AA33D5E7A398D 0F808AE024E781


255-(FF)te Wurzel ---------
0. Zahl : 5EC275847C9568C0F6998624E8F5DBC9F9758AA33D5E7A398D 0F808AE024E781

1. Ergebniss : 1
1. Rest : 18
1. Prüfung : 19

2. Ergebniss : 1
2. Rest : 5EC275847C9568C0F6998624E8F5DBC9F9758AA33D5E7A398D 0F808AE024E780
2. Prüfung : 5EC275847C9568C0F6998624E8F5DBC9F9758AA33D5E7A398D 0F808AE024E781
und das sind mal 3 beispiele wo es nicht klappt

ich hoffe das dir das hilft

mfg Dano

ps: im memo habe ich Courier als font.... das machts übersichtlicher
  Mit Zitat antworten Zitat