2.4.9 Esimerkki painonvartija

Lisätään painonvartijaan edellisissä kappaleissa esitettyjen funktioiden kaltaisia funktioita. Näin pääohjelma siistiytyy hieman selvemmäksi. Funktioiden käytöstä on lisäksi se etu, että koodin muuttamisessa ei välttämättä tarvitse kajota varsinaiseen pääohjelmaan (main), vaan useimmiten riittää muutokset muissa funktioissa.

/* *********************************************************
PAINO4.CPP
  Lasketaan ihannepaino.
  Harjoitellaan erilaisten funktioiden käyttöä.
********************************************************* */

#include <iostream.h>
#include <stdio.h>

#define SUHDELUKU 100.0

void tulosta_esittely(void)
{
  cout << "\n\n";
  cout << "       Ihannepaino\n\n";
  cout << "Ohjelma laskee ihannepainosi\n";
  cout << "pituutesi perusteella.\n" << endl;
}

void kysy_pituus(double &pituus)
{
  cout << "Anna pituutesi sentteinä > ";
  cin >> pituus;
}

void kysy_paino(double &paino)
{
  cout << "Anna painosi kiloina     > ";
  cin >> paino;
}

double laske_ihanne(double pituus)
{
  return (pituus - SUHDELUKU);
}

double laske_erotus(double paino, double ihanne)
{
  return (paino - ihanne);
}

void tulosta_painot(double paino, double ihanne, double erotus)
{
  printf("\n");
  printf("Nykyinen painosi %5.1lf kg\n", paino);
  printf("Ihannepainosi    %5.1lf kg\n", ihanne);
  printf("Erotus           %5.1lf kg\n", erotus);
}

int main(void)
{
  double pituus, paino, ihanne, erotus;

  tulosta_esittely();
  kysy_pituus(pituus);
  kysy_paino(paino);
  ihanne = laske_ihanne(pituus);
  erotus = laske_erotus(paino, ihanne);
  tulosta_painot(paino, ihanne, erotus);

  return 0;
}