c verstaändnis frage.



  • Hallo, Ich hab würde gerne etwas zu diesem Quelcode wissen. und zwar hab ich 2 fragen..
    Frage nr.1

    Bei 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.1

    Bei 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 willst gesamt / 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' 😉


Anmelden zum Antworten