Autor |
Beitrag |
Delphi Noob
      
Beiträge: 24
win xp
D6 Enterprise
|
Verfasst: Mi 14.12.05 19:20
ich muss eine zahl finden deren quersumme durch 2006 teilbar ist.
das ist mein code, irgendwas ist da falsch vielleicht könnt ihr mir ja helfen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| var suchwert, i,nummer:integer; zahl:string; begin nummer:=99999; while suchwert mod 2006 <>0 do begin inc(nummer); zahl:=inttostr(nummer); for i:=1 to length(zahl) do suchwert:=suchwert+strtoint(zahl[i]); end; zahl1.caption:=zahl; end; |
|
|
Alstar
      
Beiträge: 827
|
Verfasst: Mi 14.12.05 19:29
Probiers mal so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var suchwert, i,nummer:integer; zahl:string; begin nummer:=99999; while (suchwert mod 2006) <> 0 do begin inc(nummer); zahl:=inttostr(nummer); sucherwert := 0; for i:=1 to length(zahl) do suchwert:=suchwert+strtoint(zahl[i]); end; zahl1.caption:=zahl; end; |
Alstar
Edit: Source eingerückt
|
|
Delphi Noob 
      
Beiträge: 24
win xp
D6 Enterprise
|
Verfasst: Mi 14.12.05 19:48
sicher, dass das so funktioniert, bei mir sucht er sich tot.
was hast du denn da raus ?
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 14.12.05 20:00
@Alstar: sucherwert? da ist ein er zu viel!
@Delphi Noob: Setz doch nummer auf 100298 und debugge (also mit haltepunkt auf nummer := ...), da müsste ja nach dem zweiten Durchlauf nummer = 100300 sein, und 100300 mod 2006 ist ja 0. Also müsste er dann beim dritten Beginn der Schleife abbrechen...
|
|
Alstar
      
Beiträge: 827
|
Verfasst: Mi 14.12.05 20:09
Ja, ist ein "er" zuviel.
Aber folgendes: Teil mal 2006 durch 9. Das sind knapp 223. Das heißt, dass du eine Zahl mit 222 9 und einer 8 brauchst, damit die Quersumme 2006 ergibt (ist nur ein Beispiel).
Alstar
|
|
Delphi Noob 
      
Beiträge: 24
win xp
D6 Enterprise
|
Verfasst: Mi 14.12.05 20:28
Also ich wollte ja eigentlich auch noch einen Teil der Aufgabe selber machen aber ich schreibe hier mal die genau Aufgabe:
Man finde zwei aufeinander folgende positive ganze Zahlen, deren Quersummen beide durch 2006 teilbar sind
|
|
Alstar
      
Beiträge: 827
|
Verfasst: Mi 14.12.05 20:38
Delphi Noob hat folgendes geschrieben: | [...]Man finde zwei aufeinander folgende positive ganze Zahlen, deren Quersummen beide durch 2006 teilbar sind |
Ich würd mal sagen: Nach dieser Aufgabenstellung gibt es keine zwei Zahlen, die das erfüllen.
Aufeinanderfolgend heißt: Die letzte Ziffer ist um eins größer bzw. eins geringer wie die der vorherigen Zahl. Das beeinflusst die Quersumme um +/-1.
Jetzt finde mal zwei aufeinanderfolgende natürliche Zahlen, für die gilt n1*x Teiler von 2006 (n1+1)*x Teiler von 2006.
Ich behaupte mal, dass es die nicht gibt.
Alstar
Edit: Es ist maximal möglich, dass die beiden Quersummen Teiler von 2006 sind
|
|
Delphi Noob 
      
Beiträge: 24
win xp
D6 Enterprise
|
Verfasst: Mi 14.12.05 20:41
Delphi Noob hat folgendes geschrieben: | Also ich wollte ja eigentlich auch noch einen Teil der Aufgabe selber machen aber ich schreibe hier mal die genau Aufgabe:
Man finde zwei aufeinander folgende positive ganze Zahlen, deren Quersummen beide durch 2006 teilbar sind |
mir ist gerade aufgefallen das es möglicher weise auch daran liegen kann das die integer komponente viel zu lang ist bei über 200 zeichen.
welche komponente kann denn dafür nehmen die zahlen mit sehr vielen ziffern als wert annehmen kann und auch integer eigenschaften hat ?
|
|
Alstar
      
Beiträge: 827
|
Verfasst: Mi 14.12.05 20:43
Siehe meinen Beitrag oben: Es gibt imho keine Zahlen, die dieses Kreterium erfüllen
Alstar
|
|
facu!ty
Hält's aus hier
Beiträge: 4
|
Verfasst: Mi 14.12.05 21:08
doch es gibt diese beiden zahlen, nur glaube ich nicht, dass delphi einen zahlentypen hat, der genug stellen für diese zahl hat. die beiden zahlen haben in meinem beispiel 446 Stellen:
Die ersten 222 stellen sind 9en, die nächste eine 7 und die nächsten 223 Stellen sind wieder 9en.
445*9+7=4012 4012/2006=2
Bei der zweiten zahl sind die ersten 222 stellen logischerweise wieder 9en, die nächste stelle ist eine 8 und danach kommen 223 nullen.
222*9+8=2006 2006/2006=1
P.S. viel spass beim wettbewerb 
Zuletzt bearbeitet von facu!ty am Mi 14.12.05 21:11, insgesamt 1-mal bearbeitet
|
|
Alstar
      
Beiträge: 827
|
Verfasst: Mi 14.12.05 21:10
Lies doch mal genau:
Zitat: |
zwei aufeinander folgende positive ganze Zahlen
|
Alstar
|
|
facu!ty
Hält's aus hier
Beiträge: 4
|
Verfasst: Mi 14.12.05 21:12
sie sind doch aufeinanderfolgend. wenn die letzten 223 stellen 9en sind werden sie bei der darauffolgenden zahl zu nullen und die zahl davor erhöht sich um eins.
|
|
Maximov
Hält's aus hier
Beiträge: 2
|
Verfasst: Mi 14.12.05 21:14
Ich möcht das zwar hier nicht mies machen, aber du weißt schon das du eine SELBSTÄNDIGKEITS-Erklärung beim Bundeswettbewerb Mathematik unterschreibst, wenn du es abschickst?
Dies ist die Aufgabe 1 des Bundeswettbewerb Mathematik 2006.
PS: Die Aufgabe ist wenn man ein bisschen drüber nachdenkt einfach, da braucht man kein Programm
MFG
Maximus
|
|
Alstar
      
Beiträge: 827
|
Verfasst: Mi 14.12.05 21:19
facu!ty hat folgendes geschrieben: | sie sind doch aufeinanderfolgend. wenn die letzten 223 stellen 9en sind werden sie bei der darauffolgenden zahl zu nullen und die zahl davor erhöht sich um eins. |
Klingt logisch
Ich nehme alles zurürck und behaupte das Gegenteil
(Und sowas wie ich hat Mathe-LK  )
Alstar
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mi 14.12.05 21:28
Maximov hat folgendes geschrieben: | Dies ist die Aufgabe 1 des Bundeswettbewerb Mathematik 2006. |
Yep, ist es, und daher
*closed*
_________________ We are, we were and will not be.
|
|