c verstaändnis frage.
-
Hallo, Ich hab würde gerne etwas zu diesem Quelcode wissen. und zwar hab ich 2 fragen..
Frage nr.1Bei einen Array beginnt man soweit ich weiß bei null.
Ich hab das Versucht aber der fängt bei mir immer bei 1 an, warum!?Frage nr.2
Eine Forschleife hat ja eine Bedingung in der Klammern. Die geschweifte Klammer ist die Anweisung. Hier sind 2 for Schleifen die keine geschweifte Klammern sprich nur Bedingungen haben(hab ich unten als frage 2 kommentiert.) wie interprietiert der Compiler dies?#include <stdio.h> #include <stdlib.h>n main(int argc, char *argv[]) { // pflicht Schleife bzw. beginn Schleife. int i; double temperatur [31],gesamt =0,durchschnitt; printf("\t\n Tagestemperatur des Monat August!\n"); for(i=0;i<=30;i++) // FRAGE 2 printf("%i. Tag: ",i+1); scanf("%i",&temperatur[i]); printf("\n Alle Werte des August \n"); for(i=0; i<=30; i++) // FRAGE 2 printf("\n %i.Tag: %.2lf Grad",i+1,temperatur[i]); for(i=0; i<=30; i++) gesamt+= temperatur[i]; durchschnitt = gesamt/31; printf("\n\n Durchschnitt. Temperatur = %.2lf. Grad",durchschnitt); system("pause"); } // pflicht Schleife bzw. endschleife
tausend dank schonmal!
lg hasso
-
hasso schrieb:
Hallo, Ich hab würde gerne etwas zu diesem Quelcode wissen. und zwar hab ich 2 fragen..
Frage nr.1Bei einen Array beginnt man soweit ich weiß bei null.
Ich hab das Versucht aber der fängt bei mir immer bei 1 an, warum!?Wegen dem hier?
printf("%i. Tag: ",i+1);
Da addierst du ja auch eins drauf... Falls du das hier nicht meinst, schreib, was du ausprobiert hast. Das ist deiner Fragestellung nach nicht klar.
hasso schrieb:
Frage nr.2
Eine Forschleife hat ja eine Bedingung in der Klammern. Die geschweifte Klammer ist die Anweisung. Hier sind 2 for Schleifen die keine geschweifte Klammern sprich nur Bedingungen haben(hab ich unten als frage 2 kommentiert.) wie interprietiert der Compiler dies?Eine for-Schleife braucht keine geschweiften Klammern.
Hinter einer for-Schleife kommt ein Ausdruck, der ausgeführt wird. Dieser Ausdruck kann entweder ein einfacher Befehl sein (mit Semikolon abgeschlossen) oder ein Block (mehrere Befehle in geschweiften Klammern).
-
hasso schrieb:
Ich hab das Versucht aber der fängt bei mir immer bei 1 an, warum!?
hasso schrieb:
for(i=0;i<=30;i++) printf("%i. Tag: ",i+1); // hier gibst Du i _+1_ aus... scanf("%i",&temperatur[i]);
...klar, dass dann "1. Tag" auf dem Bildschirm steht.
hasso schrieb:
Die geschweifte Klammer ist die Anweisung. Hier sind 2 for Schleifen die keine geschweifte Klammern sprich nur Bedingungen haben(hab ich unten als frage 2 kommentiert.)
Die
for
-Schleife hat folgende Syntax:for ( expression[t]opt[/t]; expression[t]opt[/t]; expression[t]opt[/t]) statement
for ( declaration expression[t]opt[/t]; expression[t]opt[/t] ) statement
Wobei statement natürlich auch ein compound statement sein kann. Du willst wahrscheinlich:
for(i=0;i<=30;i++) { printf("%i. Tag: ",i+1); scanf("%i",&temperatur[i]); }
BTW:
- Es gibt zwei für
main
gültige Signaturen:int main( void )
und . Keine von beiden hast du getroffen - Geschweifte Klammern bedeten nicht automatisch "Schleife"! (Was Du als "pflicht Schleife bzw. beginn Schleife" verstehst ist der Funktionsrumpf von
main
.) - Es ist üblich, Arrays über
anz
zu deklarieren und Schleifenvariablen bis< anz
laufen zu lassen. (nicht<= anz
) - Dein
durchschnitt
wird ungenau, da Du zu seiner Errechnung eine reine Integerdivision durchführst (Du willstgesamt / 31.0
(Die reziproke 0 ist überflüssig, aber sonst übersiehst Du mir noch den Punkt)
- Für
system( PAUSE );
gibt's schönere Alternativen.
greetz, Swordfish
// edit: Swordfish just changed his callsign. Swordfish may now be called 'SlowFox'
- Es gibt zwei für