Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   modular 0.0? (https://www.delphipraxis.net/182373-modular-0-0-a.html)

Kuehter 20. Okt 2014 10:36

modular 0.0?
 
Hallo
Ich habe ein Problem ich habe normalerweise immer 3-tellig Zahlen in dem Programm das ich schrieb. Nur sobald ich eine 2-stellige Zahl einlese, da diese per Random erzeugt werden, dichtet er sich von selbst eine zahl dazu. ich konnte den Fehler schon begrenzen auf folgende Zeilen

Delphi-Quellcode:

function numberdissect(numbers: array of integer): Tallnumbers; // Aufsplitten der Nummern array Allnumbers besteht aus 27 stellen 0-26

var
    safer: integer;
    counter, resultmerker: integer;
    onenumber: array[0..2] of integer; // Für eine 3 Stellige zahl die er abspeichern soll

begin
    resultmerker := 0;

    for counter := low(numbers) to high(numbers) do
    begin
        safer := 2;
        while numbers[counter] <> 0 do
        begin
          ShowMessage ('Wert ist falsch');
          onenumber[safer] := numbers[counter] mod 10;
          numbers[counter] := numbers[counter] div 10;
          dec(safer);
        end;

        for safer := 0 to 2 do
        begin
            Result[resultmerker] := onenumber[safer];   // speichern der gesplittenen zahl in einzelne werte von 0-9
            inc(resultmerker);
        end;
    end;
end;

Als Beispiel:

Ich habe die Zahlen 623 + 33 = 656
dann schreibt er in die freie Stelle wo eigentliche ne null stehen sollte eine 6 rein uns dort steht dann bei der Ausgabe folgendes

623+633 = 656

das kommt aber nicht mit dem Ergebnis ein

also das er die hier Rot makierte Zahl nimmt weiß ich schon

mkinzler 20. Okt 2014 10:42

AW: modular 0.0?
 
Was soll die Funktion eigentlich machen?

Kuehter 20. Okt 2014 10:44

AW: modular 0.0?
 
ich habe 9 zahlen die 3 stellig sind alle diese 9 zahlen haben insgesamt 27 einzelzahlen sprich 123 = 1|2|3.
das splittet die so auf und das macht die auch
nur wenn ich ne zahl habe die 2 stellen hat soll er null reinschreiben was er aber nicht tut.

mkinzler 20. Okt 2014 10:46

AW: modular 0.0?
 
Warum verhinderst du nicht einfach die Speicherung von Zahlen, welche nicht 3 stellig sind? Bzw. erweiterst diese.

Kuehter 20. Okt 2014 10:48

AW: modular 0.0?
 
er soll auch 2 stellige oder 1 stellige speichern nur ich weiß nicht wie ich ihm sagen kann das er auffüllen soll bzw weiß es schon aber weiß nicht wo ich das einsätze

mkinzler 20. Okt 2014 10:56

AW: modular 0.0?
 
Wie willst Du den auffüllen: 63 -> 063 oder 630?

Kuehter 20. Okt 2014 11:01

AW: modular 0.0?
 
also sinnvollerweise 063

mkinzler 20. Okt 2014 11:02

AW: modular 0.0?
 
In deinem Code ist aber 6 die erste Ziffer der 3 stelligen Zahl.

Kuehter 20. Okt 2014 11:04

AW: modular 0.0?
 
meinst du die rote 6 weil das wäre der falsche also die 633+33 soll nachher stehen wenn das so richtig ist 633+033

also er braucht nur die 33 auffüllen

himitsu 20. Okt 2014 11:42

AW: modular 0.0?
 
Zitat:

Delphi-Quellcode:
while numbers[counter] <> 0 do

Du brichts ab, sobald dort 0 drin steht, also sind dann alle höheren Dezimalstellen natürlich undefiniert.
* entweder du initialisiert voher gefälligst diese Werte (alles mit 0 füllen)
* oder du mußt die nichtbelegten Werte nachher noch mit 0 füllen
* oder du lässt immer alle gewünschten Dezimalstellen durchrechnen

Und nun rate auch mal was passiert, wenn da eine 4-stellige oder noch größere oder vielleicht sogar negative Zahl drin steht?
Du solltest dringend bei deinen Programmen immer die Bereichs- und vielleicht sogar die Überlaufprüfung aktivieren. (z.B.
Delphi-Quellcode:
{$R+}
an den Anfang aller deiner eigenen Units)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:59 Uhr.
Seite 1 von 3  1 23      

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