Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
mave Gast
|
Verfasst am: 09. Nov 2005 15:13 Titel: Frage zu FOR-Schleife |
|
|
Hi, wollte mal fragen, warum die folgende Funktion mir immer nur 0 als Ergebnis liefert:
Code: | int imkreis(int n)
{
int z = 0;
for (int i=-n; i==n; i=i+1)
for (int j=-n; j==n; j=j+1)
if ((i*i)+(j*j) <= n*n) z=z+1;
return z;
}
|
|
|
Nach oben |
|
|
|
zweiundvierzig
Anmeldungsdatum: 15.02.2005 Beiträge: 55
|
Verfasst am: 09. Nov 2005 20:40 Titel: |
|
|
Hi mave,
ich vermute mal, das liegt daran, dass du bei der äußeren for-Schleife die runden Klammern vergessen hast. Poste aber lieber nochmal den ganzen Code.
gruß
maverick _________________ hello world! |
|
Nach oben |
|
|
Tobias
Anmeldungsdatum: 15.02.2005 Beiträge: 149
|
Verfasst am: 09. Nov 2005 21:17 Titel: |
|
|
Das liegt daran, dass du den zweiten Parameter in der For-schleife falsch deutest.
for (A; B; C)
A = Initialisierung
B = boolescher Ausdruck. Wenn B wahr, dann durchlaufe Schleife, wenn B falsch, dann brich ab
C = Reinitialisierung nach Durchlauf
Der Ausdruck B ist bei dir aber gleich am Anfang falsch und deshalb wird abgebrochen.
Richtiger wäre:
Code: |
int imkreis(int n)
{
int z = 0;
for (int i=-n; i<n; i++)
for (int j=-n; j<n; j++)
if ((i*i)+(j*j) <= n*n) z=z+1;
return z;
}
|
|
|
Nach oben |
|
|
tms Gast
|
Verfasst am: 09. Nov 2005 22:32 Titel: |
|
|
Lass das mal durch den Debugger laufen:
Code: | int imkreis(int n)
{
int z = 0;
for (int i=-n;
* i<n;
i++)
for (int j=-n; j<n; j++)
if ((i*i)+(j*j) <= n*n) z=z+1;
return z;
} |
Gut die Werteübergabe i=-n ist eigentlich schon falsch, weil i alles beinhalten kann.( i = i - n) i hat keinen definierten Wert. Aber das ist nicht das einzige Problem. Denn selbst wenn man dafür sorgt, dass i oder j -n ist...
Da wo das Sternchen ist die Unterbrechung und i ist gleich n-1 an dieser Stelle, warum auch immer . (Borland C Builder). Deklariert und initialisiert man alle Variablen vorher stimmt alles. Es ist egal ob man i++ oder i = i+1 schreibt. Ich dachte zuerst an eine Scherzfrage, kann aber beim coden wirklich ein Problem werden, weil hier anscheinend eine merkwürdige Interpretation der Variablen vorliegt.
Gruß
TMS |
|
Nach oben |
|
|
Tobias
Anmeldungsdatum: 15.02.2005 Beiträge: 149
|
Verfasst am: 10. Nov 2005 19:36 Titel: |
|
|
@tms: Versteh kein Wort? Kannste das nochmal erläutern?
Was ist an falsch? Verwechselst du das mit ? |
|
Nach oben |
|
|
TMSearcher
Anmeldungsdatum: 19.05.2005 Beiträge: 270 Wohnort: Bremen
|
Verfasst am: 11. Nov 2005 19:41 Titel: |
|
|
Hi,
brauch, glaub ich nicht näher erklärt werden. Mein System muss gesponnen haben, denn was mir der debugger angezeigt, hat waren Hausnummern.
Zitat: | Der Ausdruck B ist bei dir aber gleich am Anfang falsch und deshalb wird abgebrochen. | Ist natürlich richtig. Muss natürlich i<n statt i==n heißen.
Ich hatte das auch zum Test geändert und war dann sehr erstaunt, als das immer noch nicht auf klappte.
Wie auch immer, das Problem ist gelöst denke ich.
Gruß
TMS _________________ Intelligent life is so very rare,
the rarest thing in creation
and the most precious
This is Earth Calling.. |
|
Nach oben |
|
|
|