Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Feststellen ob Zahl durch 3 Teilbar (https://www.delphipraxis.net/79948-feststellen-ob-zahl-durch-3-teilbar.html)

frielix 31. Okt 2006 17:04


Feststellen ob Zahl durch 3 Teilbar
 
So, mein Programm soll schauen ob die Variable durch 3 zu teilen geht, ansonsten sollen soviele Nullen vorn drangemacht werden bis es geht

Habe mir gedacht das das so hier geht:

Delphi-Quellcode:
if not length(vK) mod 3 = 0 then
 begin
  repeat
   vk := '0' + vK;
  until length(vK) mod 3 = 0;
 end;
Aber irgendwie geht das, wenn nur noch ein Zeichen fehlt, bis es durch 3 teilbar wird. Also bei 2, 5, 8, 11, usw...
Aber wen vK nur ein (oder 4, 7, ...) Zeihen hat passiert gar nicht...

Waran liegt das??

MfG Felix :wink:

bigg 31. Okt 2006 17:12

Re: Feststellen ob Zahl durch 3 Teilbar
 
moin,

was soll das Ziel deines Programms sein, eine Zahl in ein leserliches Format bringen?
Beschreib mal genauer was du eigentlich vor hast...

Nicolai1234 31. Okt 2006 17:14

Re: Feststellen ob Zahl durch 3 Teilbar
 
so gehts:
Delphi-Quellcode:
if not (length(vK) mod 3 = 0) then
begin
  repeat
   vk := '0' + vK;
  until length(vK) mod 3 = 0;
end;

Sunlight7 31. Okt 2006 17:17

Re: Feststellen ob Zahl durch 3 Teilbar
 
Hallo!

Da Blick ich nicht durch...

Was ist vK für ein Typ?
Entweder was Zahlenmäßiges, dann kannst Du nicht '0' dran hängen oder ein String, dann kannst Du nicht damit rechnen.

Und warum vorne Nullen dran hängen :gruebel: :gruebel: :gruebel:
Ob jetzt 4 : 3 oder 00004 : 3, das macht doch keinen Unterschied...

Oder soll das Ergebnis von Length(vk) durch 3 Teilbar sein?
Meine (altmodische :mrgreen: ) Methode:
Ergebnis:=(Frac(Length(vk) / 3)=0); :mrgreen:

DerDan 31. Okt 2006 17:18

Re: Feststellen ob Zahl durch 3 Teilbar
 
Hallo

Eine Zahl lässt sich durch drei teilen,

wenn sich die Quersumme durch drei teilen läßt!

Durch anhängen von Nullen ändert sich die Quersumme aber nicht!

-> dadurch bekommst du es nie hin, das sie sich durch drei teilen läßt


mfg


DerDan

idontwantaname 31. Okt 2006 17:24

Re: Feststellen ob Zahl durch 3 Teilbar
 
Ich denke, er möchte die Länge des Strings vK auf eine durch 3 teilbare Zahl bringen ;)

Khabarakh 31. Okt 2006 17:25

Re: Feststellen ob Zahl durch 3 Teilbar
 
@Sunlight7 & DerDan: Der Titel mag etwas verwirren, aber im Code ist es doch nun wirklich offensichtlich.

Eine schönere Version:
Delphi-Quellcode:
if Length(vK) mod 3 <> 0 then
      vK := StringOfChar('0', 3 - Length(vK) mod 3) + vk;

Axxus 31. Okt 2006 17:26

Re: Feststellen ob Zahl durch 3 Teilbar
 
du mienst wohl eher hinten ne 0 dranhängen denn 020 = 20 das spielt keine rplle wieviele nulllen vorne dran sind (oder ich hab deine frage falsch verstanden) dann muss die zahl am ende ne ganze zahloder ne kommazahl???
Und was is wenns ne periodische zahl is doll nur dann ne 0 angehängt werden???

Axxus

frielix 31. Okt 2006 17:27

Re: Feststellen ob Zahl durch 3 Teilbar
 
So, ich hatte mich vielleicht etwas undeutlich ausgedrückt, aber das was Nicolai1605 geschrieben hat, war genau das was ich wissen wollte :thumb:

Ich möchte eine Zahl in Dreierpärchen aufteilen (warum ist ja jetzt völlig egal :mrgreen: ) daher muss die Länge der Augangszahl durch 3 Teilbar sein...

@Sunlight7: Dazu gibt es StrToInt(vK) :wink:

Also nochmal danke an alle!

Jelly 31. Okt 2006 22:22

Re: Feststellen ob Zahl durch 3 Teilbar
 
Warum nicht einfach die Format Funktion nutzen:

Delphi-Quellcode:
function Dreier (Zahl : integer) ;
begin
     Dreier := Format ('%.3d',[Zahl]) ;
end ;

Khabarakh 31. Okt 2006 22:34

Re: Feststellen ob Zahl durch 3 Teilbar
 
Weil sie nicht macht, was er will ;) ? Deine Funktion rückt nur Zahlen > 1000 zurecht. Außerdem sind ein Rückgabewert zu wenig und für meinen Geschmack ein paar Leerzeichen zu viel drin *g* . Wobei, nach dem Komma fehlt wieder eines.

Jelly 31. Okt 2006 22:45

Re: Feststellen ob Zahl durch 3 Teilbar
 
Zitat:

Zitat von Khabarakh
Weil sie nicht macht, was er will ;) ?

Die Funktion fügt eine 0 davor, wenn die Länge kleiner als 3 ist.
Zitat:

Zitat von Khabarakh
Deine Funktion rückt nur Zahlen > 1000 zurecht.

Du meinst < 1000.
Zitat:

Zitat von Khabarakh
Außerdem sind ... ein paar Leerzeichen zu viel drin *g* . Wobei, nach dem Komma fehlt wieder eines.

Wo siehst Du Leerzeichen und Kommas ?

Jürgen Thomas 1. Nov 2006 07:12

Re: Feststellen ob Zahl durch 3 Teilbar
 
Zitat:

Zitat von Jelly
Zitat:

Zitat von Khabarakh
Außerdem sind ... ein paar Leerzeichen zu viel drin *g* . Wobei, nach dem Komma fehlt wieder eines.

Wo siehst Du Leerzeichen und Kommas ?

Es gibt Programmierer, die sehr empfindlich sind und nur ihre eigenen Formatierungsregeln akzeptieren. Ich vermute, er meint:
Zitat:

Zitat von Jelly
Delphi-Quellcode:
function Dreier (Zahl : integer) ;
begin
     Dreier := Format ('%.3d',[Zahl]) ;
end ;

Dies sollte so geschrieben werden (wie es von Delphi verwendet bzw. vorgegeben wird):
Delphi-Quellcode:
function Dreier(Zahl: integer);
begin
  Dreier := Format('%.3d', [Zahl]);
end;
Ich meine, das sollte man nicht so puristisch sehen. Wichtig ist, dass eine sichtbare Formatierung verwendet wird, alles Wichtige erkannt wird und man immer alles auf die gleiche Weise schreibt.

Nicht verwirren lassen! Jürgen


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz