#include <stdio.h>

/* Counting loop - we know how many times to loop ahead of time. */
int sumTenNums() 
{
    int counter;
    int num;
    int sum;

    counter = 0;
    sum = 0;
    printf("You will be prompted to enter 10 ints:\n");
    while (counter < 10) {
        printf("enter an int: ");
        scanf(" %d", &num);
        sum = sum + num;
        counter = counter + 1;
    }
    return sum;
}

/* Sentinel-controlled loop - loop until we receive a certain value. */
double avgOfXNums()
{
    int sum;
    int count;
    int num;

    count = 0;
    sum = 0;
    printf("enter an int (0 to quit): ");
    scanf(" %d", &num);
    while (num != 0) {
        sum = sum + num;
        count = count + 1;
        printf("enter an int: ");
        scanf(" %d", &num);
    }
    return (double)(sum) / count;
}

int isValidGrade(char letter) 
{
    if (letter == 'A' || 
            letter == 'B' ||
            letter == 'C' ||
            letter == 'D' ||
            letter == 'F') {
        return 1;
    } else {
        return 0;
    }
}

/* Input validation loop - keep asking until you receive valid input. */
void getLetterGrade()
{
    int count;
    char letter;

    count = 1;
    printf("enter a valid letter grade (A-F): ");
    scanf(" %c", &letter);
    while(!isValidGrade(letter)) {
         count = count + 1;
         printf("enter a valid letter grade (A-F): ");
         scanf(" %c", &letter);
    }
    printf("Great!  %c is a valid letter grade.\n", letter);
    printf("It only took you %d tries.\n", count);
}

/* General conditional loop - loop until some desired condition is met. */
int sumItemsTo100()
{
    int num;
    int sum;

    sum = 0;
    printf("enter the price of an item: ");
    printf("We won't let you go over 100: ");
    scanf(" %d", &num);
    while(sum + num < 100) {
        sum = sum + num;
        printf("enter the price of an item: ");
        scanf(" %d", &num);
    }
    return sum;
}

int main(void)
{
    printf("===== sumTenNums() =====\n");
    printf("result is: %d\n", sumTenNums());
    printf("===== avgOfXNums() =====\n");
    printf("result is: %f\n", avgOfXNums());
    printf("===== getLetterGrade() =====\n");
    getLetterGrade();
    printf("===== sumItemsTo100() =====\n");
    printf("result is: %d\n", sumItemsTo100());
    return 0;
}