Esempio n. 1
0
 inline S
 generalized_mean(I first, I last, T p) {
   // Check for well known cases.
   if (p == -1)
     return harmonic_mean(first, last);
   if (p == 0)
     return geometric_mean(first, last);
   if (p == 1)
     return arithmetic_mean(first, last);
   if (p == 2)
     return quadratic_mean(first, last);
   if (p == 3)
     return cubic_mean(first, last);
   
   // Either handle the infinity case or compute the generalized
   // value.
   if (is_infinity(p))
     return generalized_mean_inf(first, last, p);
   else
     return generalized_mean_non_inf(first, last, p);
 }
Esempio n. 2
0
int main(void)
{
    char ch;
    int status;
    double i, j;

    while(printf("Enter two non-zero integers (q to quit): "),
            status = scanf("%lf %lf", &i, &j),
            (ch = getchar()) != 'q')
    {
        if (ch != '\n')
        {
            if (status == 2)
            {
                printf("Too many inputs.\n");
            } else
            {
                printf("Invalid input.\n");
            }

            while (getchar() != '\n');
            continue;
        }

        if ((i == 0) || (j == 0))
        {
            printf("Numbers cannot be zero.\n");
            continue;
        }

        printf("The harmonic mean of %g and %g is %g\n",
               i, j, harmonic_mean(i, j));
    }
    printf("Bye!\n");

    return 0;
}