AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

For-do Schleife mit Sprung

Ein Thema von F.W. · begonnen am 9. Dez 2003 · letzter Beitrag vom 16. Dez 2003
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#1

For-do Schleife mit Sprung

  Alt 9. Dez 2003, 17:48
Ich programmiere gerade einen Primzahlgenerator. Der soll von einer Zahl, bis zu einer Zahl(die der Anwender eingibt) prüfen.
Da braucht man ja eigentlich nur alle ungeraden Zahlen zu prüfen, denn alle geraden Zahlen kann man ja durch 2 teilen.

Ich habe die Suchfunktion schon fertig programmiert, allerdings mit einer For-Do-Anweisung. Und die geht bei mir immer nur 1 hoch.
Kann man da noch irgendwas dranhängen, wie z.B.:
Delphi-Quellcode:
 for I := 3 to ZAHL Step 2 do begin
...
 end;
Sollte es keine For-DoAnweisung mit einem solchen(oder ähnlichem) Feature geben, was könntet ihr mit noch empfehlen.

Es kommt halt auch auf die Geschwindigkeit an, sonst würde ich alle Zahlen nehmen, und vorher mit "if Trunc(Zahl/2)*2 = Zahl then GERADE ZAHL" auf gerade Zahlen überprüfen lassen, aber da dauerte es (wenn auch nur wenige Sekunden, aber das summiert sich ja) länger.

Danke schonmal!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#2

Re: For-do Schleife mit Sprung

  Alt 9. Dez 2003, 17:55
Ein Hallöle von http://www.FrankNStein.de/Smiley-Wolke.gif,

Code:
[b]For[/b] I := 1 [b]to[/b] (ZAHL - 1) [b]div[/b] 2 [b]do Begin[/b]
  [color=red]TestZahl[/color] := (I * 2) + 1;
  ...
[b]End[/b];
Da ja auch nur bis Zahl / 2 geprüft werden braucht:
Code:
[b]For[/b] I := 1 [b]to[/b] ZAHL [b]div[/b] 4 [b]do Begin[/b]
  [color=red]TestZahl[/color] := (I * 2) + 1;
  ...
[b]End[/b];

http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

Re: For-do Schleife mit Sprung

  Alt 9. Dez 2003, 17:56
du könntest in die prozedur doch "inc(I)" einfügen
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#4

Re: For-do Schleife mit Sprung

  Alt 9. Dez 2003, 17:57
Meines wissens nach darf man die Schleifenvariable nicht innerhalb der Schleife verändern
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#5

Re: For-do Schleife mit Sprung

  Alt 9. Dez 2003, 18:00
und wieso?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#6

Re: For-do Schleife mit Sprung

  Alt 9. Dez 2003, 18:01
Stell dir vor was passiert wenn du i größer als die Bedingung zum Abbruch der Schleife änderst
Außerdem meckert der Komplizierer dann
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#7

Re: For-do Schleife mit Sprung

  Alt 9. Dez 2003, 18:03
Entweder du nimmst ne while oder eine repeat Schleife, das die einzige möglichkeit in meinen augen
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: For-do Schleife mit Sprung

  Alt 9. Dez 2003, 18:12
Ist das nicht egal, welche Schleife?

Alle 3 bewirken, meiner Meinung nach, das gleiche:
Delphi-Quellcode:
for i:=1 to Zahl do
begin
...
end;

while i<Zahl do
begin
...
end;

repeat
...
until i=Zahl
Naja, gleich ist es nicht, aber es müsste ja das Ähnliche bewirken, oder?
  Mit Zitat antworten Zitat
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#9

Re: For-do Schleife mit Sprung

  Alt 9. Dez 2003, 18:17
Es ging ja darum, dass die Laufvariable geändert werden soll. Das ist bei For-Schleifen nun mal nicht möglich. Naja Repeat und While ist eigentlich das gleiche - eins hat halt ne Eintrittsbedingung und das andre ne Austrittsbedingung. Musste halt immer nehmen wie's am besten passt grad (auch von der Logik her). Der Quellcode sollte ja möglichst selbstkommentierend sein.

MfG Niels
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: For-do Schleife mit Sprung

  Alt 9. Dez 2003, 18:20
Bei while und repeat bist du selbst dafür verantwortlich dass die Abbruchbedingung greift, sprich hie rmuss man in diesem Fall selber i inkrementieren, bei der for-Schleife wird vorher die Anzahl der Schleifendurchläufe ermittelt und dann die Schleife auch nur so und so viel mal druchlaufen.

Das man den Schleifen in einer for-Schleife nicht ändern kann (so ohne weiteres, mit einem Trick geht es) ist Compiler bedingt. Mit C/C++ Compiler kann man das machen. Nur wenn der Compiler weiß, wie oft eine Schleife durchlaufen wird, kann er besser optimieren. Desweitern sehe ich keinen Sinn darin in einer for-Schleife den Schleifenzähler ändern zu wollen, sie wurde extra für Schleifen komzepiert bei denen man weiß, wie oft sie durchlaufen wird.

Die Lösung wäre also hier eine while-Schleife.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz