/******************************************************************************
 * file:    pm503.c
 * functie: Diverse manieren om waarden in en uit een functie te krijgen.
 * status:  pfk, 15-mar-2006
 *          wlm, 24-sep-2010
 *****************************************************************************/

#include <stdio.h>
#include <stdlib.h>

// declaratie van globale variabelen, beginnend met G_

static int G_a, G_b, G_c, G_d, G_e, G_f, G_g, G_h, G_i, G_j,
           G_se,   // som even termen
           G_so,   // som oneven termen
           G_sa;   // som alle termen

// declaratie van functies

// bereken som van twee getallen:
// invoer via parameters, uitvoer via functiewaarde
int som1 (int ia, int ib)
{
  return (ia + ib);
}

// bereken som van twee getallen:
// in- en uitvoer van waarden via parameters,
// functie zonder functiewaarde!
void som2 (int ia, int ib, int *ic)
{
  *ic = ia + ib;
  return;
}

// bereken sommen van meerdere getallen:
// in- en uitvoer van waarden via globale variabelen
void som3 ()
{
  G_so = G_a + G_c + G_e + G_g + G_i;
  G_se = G_b + G_d + G_f + G_h + G_j;
  G_sa = G_a + G_b + G_c + G_d + G_e + G_f + G_g + G_h + G_i + G_j;
  return;
}

// hoofdprogramma

int main ()
{
  int a, j, s;  // lokale variabelen

  // ken waarden toe aan globale variabelen
  G_a = 1;  G_b = 2;  G_c = 3;  G_d = 4;  G_e = 5;
  G_f = 6;  G_g = 7;  G_h = 8;  G_i = 9;  G_j = 10;

  // druk som van twee getallen af (via functiewaarde)
  a = G_a;
  j = G_j;
  printf ("Som   twee termen = %i\n", som1 (a, j));

  // druk som van twee getallen af (via parameter)
  som2 (2, 20, &s);
  printf ("Som   twee termen = %i\n", s);

  // bereken sommen van meerdere getallen
  som3 ();

  // druk sommen af (via globale variabelen)
  printf ("Som oneven termen = %i\n", G_so);
  printf ("Som   even termen = %i\n", G_se);
  printf ("Som   alle termen = %i\n", G_sa);

#ifdef _WIN32
    printf("\n\n");
    system("PAUSE");
#endif

  return (0);
}

