Entwickler-Ecke
Sonstiges (Delphi) - Problem-- Teiler von Zahlen
DQ - Sa 02.10.10 20:09
Titel: Problem-- Teiler von Zahlen
Hallo Community ich habe ein Problem bei einem Programm das die möglichen Teiler einer Zahlenreihe von 1 bis z korrekt darstellt (mit for to do schleifen)
es sollte in dieser Form aussehen ( in einer Listbox oder im memo )
-------
Zahl Teiler
1 --1
2 --1,2
3 --1,3
4 --1,2,4
5 --1,5
.
.
.
-------
die richtigen Teiler bekomme ich schon raus jedoch nicht so schön nebeneinander sondern nur untereinander und dass meistens auch noch viel zu oft...
in etwa dieser vorm siehts bei mir aus
_____
Zahl Teiler
1 -- 1
2 -- 1
2 -- 2
3 -- 1
3 -- 1
3 -- 3
4 -- 1
4 -- 1
4 -- 1
4 -- 2
4 -- 2
4 -- 4
.
.
.
______
irgendwie so....
hier mein quell text
-----------------------------
var i,j,z : integer;
s : string ;
begin
z:= strtoint(edit_z.Text);
Memo1.lines.clear ;
Memo1.Lines.Add('teiler von/ sind') ;
for i := 1 to z do
begin
for j := 1 to z do
begin
if i mod j = i then break ; //<---hier durch bessert es sich etwas aber immer noch nicht so wie gewollt...
if i mod j = 0 then
s:= ' '+inttostr (i) +' -------- '+ ' '+inttostr(j) ;
Memo1.Lines.add (s) ;
end
end;
end ;
end.
---------------------------
hoffe auf Ratschläge...
Marc. - Sa 02.10.10 20:18
Hi und :welcome: im Forum!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| for i := 1 to z do begin for j := 1 to z do begin if (i mod j) = i then break;
if (i mod j) = 0 then s:= ' '+inttostr (i) +' -------- '+ ' '+inttostr(j);
Memo1.Lines.add (s); end; end; |
Nun überlege Dir, wann eine Zeile eingefügt werden soll (*1). :idea:
Zudem ist die Abbruchbedingung (*2) redundant. Das lässt sich auch anders formulieren (*3). ;)
DQ - Sa 02.10.10 23:30
Danke fürs :welcome: und die schnelle Antwort ^^
Ich werd mich gleich dran versuchen... :)
*2 ist nur aus Verzweiflung entstand war mir klar das das nicht das Gelbe vom Ei ist ^^
eine Frage noch- wie geb ich den Quelltext in so einem Fenster wie bei dir an?
Marc. - Sa 02.10.10 23:30
DQ hat folgendes geschrieben : |
| eine Frage noch- wie geb ich den Quelltext in so einem Fenster wie er bei dir ist an? |
Mit den Delphi-Tags. [delphi]Code[/delphi
]
Grüße
DQ - So 03.10.10 00:23
Hab jetzt immerhin geschaft , dass ich nichts mehr doppeld hab
also
1 ---- 1
2 ---- 1
2 ---- 2
3 ---- 1
3 ---- 3
4 ---- 1
4 ---- 2
4 ---- 4
.
.
.
ich weiß jedoch einfach nicht was ich schreiben soll, damit die Teiler nebeneinander auftauchen...
der Stand der Dinge:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| var i,j,z : integer;
begin z:= strtoint(edit_z.Text); Memo1.lines.clear ; Memo1.Lines.Add('teiler von/ sind') ; for i := 1 to z do begin for j := 1 to z do begin
if i mod j = 0 then begin Memo1.Lines.add( inttostr (i) +' -------- '+inttostr(j)) ;
end; end end; end ; end. |
Marc. - So 03.10.10 00:50
DQ hat folgendes geschrieben : |
| ich weiß jedoch einfach nicht was ich schreiben soll, damit die Teiler nebeneinander auftauchen... |
Wie oft soll eine Zahl auf der linken Seite auftauchen? Wie oft wird die innere Schleife jeweils durchlaufen? :roll:
DQ - So 03.10.10 02:11
immernoch nich ganz so wie gewollt
aber ich bin zufrieden^^
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| var i,j,z : integer;
begin z:= strtoint(edit_z.Text); Memo1.lines.clear ; Memo1.Lines.Add('Zahl/ Teiler') ; for i := 1 to z do begin memo1.Lines.add ( inttostr (i));
begin for j := 1 to z do if i mod j = 0 then begin Memo1.Lines.add(' -------- '+inttostr(j)) ; end end end; end ; end. |
sieht nun so aus
1
---- 1
2
---- 1
---- 2
3
---- 1
---- 3
4
---- 1
---- 2
---- 4
.
.
.
Danke für die guten Tips!
Tranx - So 03.10.10 13:44
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| var i,j,z : integer; s, TeilerStr : string; begin z:= StrToInt(edit_z.Text); Memo1.lines.clear ; Memo1.Lines.Add('Teiler von: sind') ; Memo1.Lines.Add('1-- 1'); for i := 2 to z do begin s := IntToStr(i)+'-- '; TeilerStr := '1, '; begin for j := 2 to (i-1) do begin if i mod j = 0 then begin TeilerStr := TeilerStr + IntToStr(j)+', '; end; end end; Memo1.Lines.Add(s+TeilerStr+IntToStr(i)); end; end; |
(1 habe ich aus verständlichen Gründen herausgenommen, denn die Zahl ist gleich ihren Teilern, würde also immer doppelt erscheinen)
dann ist das Ergebnis:
Teiler von: sind
1-- 1
2-- 1, 2
3-- 1, 3
4-- 1, 2, 4
5-- 1, 5
6-- 1, 2, 3, 6
7-- 1, 7
:
:
:
19-- 1, 19
20-- 1, 2, 4, 5, 10, 20
:
:
Das ist dann wohl so, wie Du es wünschst.
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!