| Autor |
Beitrag |
DQ
Hält's aus hier
Beiträge: 4
|
Verfasst: Sa 02.10.10 20:09
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.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Sa 02.10.10 20:18
Hi und  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).
Zudem ist die Abbruchbedingung (*2) redundant. Das lässt sich auch anders formulieren (*3). 
|
|
DQ 
Hält's aus hier
Beiträge: 4
|
Verfasst: Sa 02.10.10 23:30
Danke fürs  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?
Zuletzt bearbeitet von DQ am Sa 02.10.10 23:31, insgesamt 1-mal bearbeitet
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: 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 
Hält's aus hier
Beiträge: 4
|
Verfasst: 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.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: So 03.10.10 00:50
|
|
DQ 
Hält's aus hier
Beiträge: 4
|
Verfasst: 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
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: 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.
|
|