PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : For - Schleifenfehler



28-09-2000, 14:03
Hallo zusammen,

nach wie vor wühle ich mich durch C http://www.linuxforen.de/ubb/wink.gif Inzwischen bin ich bei den Kontrollstrukturen. Allerdings habe ich in meinem Buch wohl nen Fehler bei einem Beispiel, jedenfalls läuft das Progrämmchen nicht durch und ich kapiere nicht ganz den Sinn des Konstrukts. Kann mir vielleicht jemand anhand des nachfolgenden Postings und den eingefügten Erläuteurngen weiterhelfen.

# include <stdio.h>

int main()
{
long dm, step, lower, upper, maxdm;
float kurs;

printf("\n\n * * * Kurstabelle DM - US$ * * * \n\n");

printf("\nBitte den Kurs DM - US$ eingegeben: ");
scanf("%f", &kurs);

printf("\nBitte die Obergrenze der Tabelle eingeben: ");
scanf("%ld", &maxdm);

printf("\n\n%12s%20s\t\tKurs: %.2f\n\n", "DM", "US$", kurs);

/* bis hierher ist alles klar, die nachfolgenden Schleifen sind
von der Syntax ebenfalls klar, aber ich verstehe hier den Sinn nicht
ganz, vor allem nicht warum ich geschachtetlte Schleifen brauche! */

for(lower=step=1; lower <= maxdm; step *= 10, lower = 2*step)
for(dm = lower, upper = step*10; dem <= upper && dm <= maxdm; dm += step)
printf("%12ld %20.2f\n", dm, dm/kurs);

return 0;
}

Vielen Dank

Stefan

christophwth
28-09-2000, 17:11
Hi


<font color="#ee4444">Das habe ich geändert </font> da stand dem statt dm
Dein Programm arbeitet so, das in der inneren Schleife immer bis 10 gezählt wird in der Äußeren wird die 10ner Potenz erzeugt

Beispiel

DM US$ Kurs: 2.29

1 0.44
2 0.87
3 1.31
4 1.75
5 2.18
6 2.62
7 3.06
8 3.49
9 3.93
10 4.37
20 8.73
30 13.10
40 17.47
50 21.83
60 26.20
70 30.57
80 34.93
90 39.30
100 43.67
200 87.34
300 131.00

wenn Du Dein Programm um Diese Zeilen erweiterst dann kannst Du die wandernden Grenzen sehen.

printf("%12ld %20.2f %10.2ld %10.2ld\n", dm, dm/kurs,lower,upper);

Hier ist Deine Version mit Änderung

<pre>

# include &lt;stdio.h&gt;

int main()
{
long dm, step, lower, upper, maxdm;
float kurs;

printf("\n\n * * * Kurstabelle DM - US$ * * * \n\n");

printf("\nBitte den Kurs DM - US$ eingegeben: ");
scanf("%f", &kurs);

printf("\nBitte die Obergrenze der Tabelle eingeben: ");
scanf("%ld", &maxdm);

printf("\n\n%12s%20s\t\tKurs: %.2f\n\n", "DM", "US$", kurs);

/* bis hierher ist alles klar, die nachfolgenden Schleifen sind
von der Syntax ebenfalls klar, aber ich verstehe hier den Sinn nicht
ganz, vor allem nicht warum ich geschachtetlte Schleifen brauche! */

for(lower=step=1; lower <= maxdm; step *= 10, lower = 2*step)
for(dm = lower, upper = step*10; <font color"#ee4444">dm</font> <= upper && dm <= maxdm; dm += step)
printf("%12ld %20.2f\n", dm, dm/kurs);

return 0;
}
</pre>

CU
Christoph

29-09-2000, 08:43
Danke für die schnelle Antwort!!!

Stefan