Entwickler-Ecke
Sonstiges (Delphi) - Ziffern einer Zahl auslesen und dann weiter rechnen!
friesi - So 11.08.02 19:13
Titel: Ziffern einer Zahl auslesen und dann weiter rechnen!
Hab eine kleine frage :)
Durch eine Berechnung bekomme ich eine summe (logisch :) )
diese Summe ist z.b. 241
jetzt will ich jede Ziffer mit sich selber multiplizieren und dann alle addieren!
also so:
2*2 + 4*4 + 1*1
nur wie mache ich das er die Summe (241) "teilt" also das ich mit jeder ziffer rechnen kann?!
cbs - So 11.08.02 19:21
Tag auch
wandle doch die Zahl in string um ließ dann jedes Zeichen nacheinander aus wandle sie dann wieder in zahlen um und multipliziere und addiere sie dann
mal sehen ich mach mal nen bsp code...
friesi - So 11.08.02 19:23
ein bsp code wäre fein :)
ab mit string noch nicht wirklich gearbeitet! :lol:
cbs - So 11.08.02 19:30
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| function Berechne(Zahl: integer): integer; var str: string; cnt: LongInt; ziffer: LongInt; begin str:= IntToStr(zahl); Result:= 0; for cnt:= 1 to Length(str) do begin ziffer:= StrToInt(str[cnt]); Result:= (ziffer * ziffer) + Result; end; end; |
teste mal obs so funktioniert
Quelltext
1:
| Showmessage(IntToStr(Berechne(241))); |
friesi - So 11.08.02 19:47
mhm so gehts :) aber es kommt die falsche zahl raus :?
also 21 kommt raus 33 müsste :) ..
cbs - So 11.08.02 20:21
uhi :oops:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| function Berechne(Zahl: integer): integer; var str: string; cnt: LongInt; ziffer: LongInt; begin str:= IntToStr(zahl); ziffer:= StrToInt(str[1]); Result:= ziffer * ziffer; for cnt:= 2 to Length(str) do begin ziffer:= StrToInt(str[cnt]); Result:= (Result + ziffer) * ziffer; end; end; |
und jetzt?
friesi - So 11.08.02 20:29
nun gehts :)
hättest du vielleicht noch lust mir eben zu erklären was du gemacht hast :) bzw was die Funktion macht ?!
damit ich da nicht ganz doof stehe *gg*
cbs - So 11.08.02 20:43
nunja wie ich schon geschrieben habe...
- ich wandle die zahl (241) in ein string um
- da ein string wie ein array of char ist kann ich jedes zeichen über ein index ansprechen
- ich wandle dann jedes zeichen in eine zahl um (ziffer)
- diese addiere und multipliziere ich dann nach deiner aufgabe
- mit der for schleife gehe ich dann jede ziffer durch und mache die berechnung
- result ist ein variable die den rückgabewert der funktion entspricht
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| zahl = 241 str = '241' // erste ziffer ermitteln und brechnen ziffer = 2 result = 2*2 (4)
schleife (die anderen ziffern berechnen): cnt = 2 | ziffer = 4 | result = (4+4) * 4 (32) cnt = 3 | ziffer = 1 | result = (32 + 1) * 1 (33) schleife ende |
wenn de noch fragen hast, dann frag ich glaub ich hab das nen bissel besch**** erklärt
cbs - So 11.08.02 20:52
so gehts auch
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| function Berechne(Zahl: integer): integer; var str: string; cnt: LongInt; ziffer: LongInt; begin str:= IntToStr(zahl); Result:= 0; for cnt:= 1 to Length(str) do begin ziffer:= StrToInt(str[cnt]); Result:= (Result + ziffer) * ziffer; end; end; |
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| zahl = 241 str = '241' result = 0
schleife cnt = 1 | ziffer = 2 | result = (0 + 2) * 2 [4] cnt = 2 | ziffer = 4 | result = (4 + 4) * 4 [32] cnt = 3 | ziffer = 1 | result = (32 + 1) * 1 [33] schleife ende |
friesi - So 11.08.02 22:18
ok verstanden :)
nun noch eine zweite frage :)
Wenn ich nun 3 Variablen habe und in jeder eine Zahl steht!
ich nun aber aus allen zahlen eine zahl machen möchte! wie bekomme ich das bin?!
also z.b.:
Quelltext
1: 2: 3:
| rest:= 1; rest2:= 6; rest3:= 4; |
nun soll die zahl 164 gebildet werden.
geht das mit array?
Aber wie :D :?:
cbs - So 11.08.02 22:31
geht genauso doof wie vorher
ja du kannst deine reste in ein array speichern
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| var ziffern: array[1..5] of LongInt; zahl: LongInt; begin ziffern[1]:= 5; ziffern[2]:= 3; ziffern[3]:= 4; ziffern[4]:= 1; ziffern[5]:= 9; Zahl:= Berechne(ziffern); end; |
zahl beinhaltet dann eben die zahl 53419
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| function Berechne(ziffern: array of LongInt): LongInt; var cnt: LongInt; str: string; begin str:= ''; for cnt:= Low(ziffern) to High(ziffern) do begin str:= str + IntToStr(ziffern[cnt]); end; result:= StrToInt(str); end; |
die function
high gibt den höchsten index eines arrays zurück, in dem fall 5
die function
low gibt den kleinsten index eines arrays zurück, in dem fall 1
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!