Tilbage til slide -- Tastaturgenvej: 'u'        næste -- Tastaturgenvej: 'n'          functions/eq-sec-degree-pars-result.c - Løsning af andengradsligning - resultater via parametre af pointertyper.Lektion 12 - slide 17 : 36
Program 1

#include <stdio.h>
#include <math.h>

void solveQuadraticEquation(double a, double b, double c, 
                            int *numberOfRoots, double *root1, double *root2);
void printRoots(int numberOfRoots, double firstRoot, double secondRoot);

int main(void) {
  double a, b, c, r1, r2, s1, s2;
  int nr1, nr2;
  printf("Enter coeficients a, b, and c: ");
  scanf("%lf %lf %lf", &a, &b, &c);

  if (a != 0){
    solveQuadraticEquation(a, b, c, &nr1, &r1, &r2);  
    printRoots(nr1, r1, r2);
  }
  else
    printf("The coeficient a must be non-zero");

  solveQuadraticEquation(1.0, 1.0, -30.0, &nr2, &s1, &s2);
  printRoots(nr2, s1, s2);

  return 0;
}


/* Find roots in the quadratic equation a * x*x + b * x + c = 0.
   Assume as a precondition that a is not zero                    */
void solveQuadraticEquation(double a, double b, double c, 
                            int *numberOfRoots, double *root1, double *root2){
  double discriminant;

  discriminant = b * b - 4 * a * c;

  if (discriminant < 0){
    *numberOfRoots = 0;
  }
  else if (discriminant == 0){
    *numberOfRoots = 1;
    *root1 = -b/(2*a);
  }
  else{
    *numberOfRoots = 2;
    *root1 = (-b + sqrt(discriminant))/(2*a);
    *root2 = (-b - sqrt(discriminant))/(2*a);
  }
}   

void printRoots(int numberOfRoots, double firstRoot, double secondRoot){
  if (numberOfRoots == 0)
    printf("No roots\n");
  else if (numberOfRoots == 1)
    printf("One root: %f\n", firstRoot);
  else 
    printf("Two roots: %f and %f\n", firstRoot, secondRoot);
}