GESPRG: Uitwerking huiswerk les 4.

© Harry Broeders.

Deze pagina is bestemd voor studenten van de Haagse Hogeschool - Academie voor Technology, Innovation & Society Delft.

Huiswerk les 4:

Uitwerking:

9. Dit is wel een heel gemene opgave (4_19_9.c):

#include <stdio.h>

int main(void) {
    int i = 7, j = 7;

    if (i = 1)
        if (j = 2)
            printf("%d\n", i = i + j);
    else
        printf("%d\n", i = i - j);
    printf("%d\n", i);

    getchar();
    return 0;
}

De uitvoer is:

Als je deze uitvoer niet meteen kunt verklaren dan heb ik de volgende twee tips voor je:

  1. In de voorwaarde van beide if statements staat een = in plaats van de == die je zou verwachten.
  2. Er is niet correct ingesprongen. De else behoort niet bij de if waar hij onder uitgelijnd is.

Stap voor stap verklaring:

33. De opgave is niet correct. Dit kun je meteen zien als je de eerste 3 termen van de gegeven formule bij elkaar opteld: e = 1 + 1 + 1/1! = 3. Elke Elektrotechniekstudent weet dat e < 3 is. De juiste formule is:

Bron: http://nl.wikipedia.org/wiki/E_(wiskunde)

Het volgende programma berekent een benadering voor e door een bepaald aantal termen van deze reeks op te tellen. Het aantal termen kan door de gebruiker van het programma worden opgegeven. 4_19_33.c:

#include <stdio.h>

/* © 2013 Harry Broeders */
/* benader e met de volgende formule e = 1 + 1/1! + 1/2! + 1/3! + 1/4! + ... */
/* in deze formule betekent 4!: 4 faculteit. Dat werkt niet in C. */
/* aantal termen is een variabele die moet worden ingelezen */

int main(void) {
    double termNoemer, e;
    int aantalTermen, termNummer;

    do {
        printf("Geef het aantal termen: ");
        scanf("%d", &aantalTermen);
    } while (aantalTermen <= 0);

    termNoemer = 1;
    e = 1;
    for (termNummer = 1; termNummer < aantalTermen; termNummer = termNummer + 1) {
        termNoemer = termNoemer * termNummer;
        e = e + 1 / termNoemer;
    }

    printf("e benaderd met %d termen = %.13f\n", aantalTermen, e);

    fflush(stdin);
    getchar();
    return 0;
}

De uitvoer van dit programma is:

Als je wilt lezen hoe ik een programma dat lijkt op het bovenstaande programma stap voor stap heb ontwikkeld dan kun je dat lezen op: cos_stap_voor_stap.htm.