HomeProgrammingc program to find average of 3 numbers

c program to find average of 3 numbers

Introduction

In the realm of programming, simplicity often conceals intricate operations. Today, we embark on a journey to demystify a seemingly straightforward task: finding the average of three numbers in the C programming language. While this might sound like child’s play to seasoned developers, the journey promises insights into C syntax, problem-solving strategies, and even a glimpse into advanced techniques. So, fasten your seatbelts as we dive into the world of C programming and explore the nuances of averaging three numbers.

The Whole Program

Before dissecting the intricacies of the program, let’s take a holistic look at the code:

#include <stdio.h>

int main() {
    float num1, num2, num3, average;

    // Input
    printf("Enter three numbers: ");
    scanf("%f %f %f", &num1, &num2, &num3);

    // Calculation
    average = (num1 + num2 + num3) / 3;

    // Output
    printf("The average is: %.2f\n", average);

    return 0;
}

Breaking Down the Problem

Input

The first step is to take input from the user. The scanf function is used to read three floating-point numbers.

Calculation

The average is then calculated using the formula: (num1 + num2 + num3) / 3.

Output

Finally, the result is displayed to the user with the printf function.

Breaking Down the Code: Step by Step

Step 1: Including the Necessary Header File

#include <stdio.h>

This line tells the compiler to include the standard input-output library, which provides functions like printf and scanf.

Step 2: Declaring Variables

float num1, num2, num3, average;

Here, we declare four variables of type float to store the three input numbers and the calculated average.

Step 3: Taking Input

printf("Enter three numbers: ");
scanf("%f %f %f", &num1, &num2, &num3);

The printf function prompts the user to input three numbers, and scanf reads these values and stores them in the respective variables.

Step 4: Calculating Average

average = (num1 + num2 + num3) / 3;

The average is calculated by adding the three numbers and dividing the sum by 3. The result is stored in the average variable.

Step 5: Displaying Output

printf("The average is: %.2f\n", average);

The result is then displayed to the user with two decimal places using printf.

Step 6: Return Statement

return 0;

The return 0; statement indicates that the program executed successfully. A non-zero value would signify an error.

Advanced Code with Error Handling

While the basic program is functional, it lacks robust error handling. Let’s enhance it to handle scenarios where the user might input non-numeric values.

#include <stdio.h>

int main() {
    float num1, num2, num3, average;

    // Input
    printf("Enter three numbers: ");

    // Error handling for non-numeric input
    if (scanf("%f %f %f", &num1, &num2, &num3) != 3) {
        printf("Invalid input. Please enter numeric values.\n");
        return 1;  // Indicates an error
    }

    // Calculation
    average = (num1 + num2 + num3) / 3;

    // Output
    printf("The average is: %.2f\n", average);

    return 0;
}

Here, we added error handling by checking the return value of scanf. If it doesn’t match the expected count (3 in this case), it indicates invalid input, and an error message is displayed.

C program to find the average of N numbers, where N

#include <stdio.h>

int main() {
    int n, i;            // Declare variables to store the number of elements and loop counter
    float sum = 0, num, average;  // Declare variables for sum, current number, and average

    // Input: Number of elements
    printf("Enter the number of elements: ");
    scanf("%d", &n);

    // Input: Elements and calculation
    printf("Enter %d numbers:\n", n);
    for (i = 0; i < n; ++i) {
        printf("Enter number %d: ", i + 1);
        scanf("%f", &num);
        sum += num;  // Add the current number to the running sum
    }

    // Calculate average
    average = sum / n;

    // Output
    printf("The average is: %.2f\n", average);

    return 0;
}

Step 1: Include Header File

#include <stdio.h>

This line includes the standard input-output library, which provides functions like printf and scanf.

Step 2: Declare Variables

int n, i;
float sum = 0, num, average;

Here, we declare integer variables n and i to store the number of elements and loop counter, and float variables sum, num, and average to store the running sum, the current number, and the average, respectively.

Step 3: Input – Number of Elements

printf("Enter the number of elements: ");
scanf("%d", &n);

The user is prompted to enter the number of elements (N), and the value is stored in the variable n.

Step 4: Input – Elements and Calculation

printf("Enter %d numbers:\n", n);
for (i = 0; i < n; ++i) {
    printf("Enter number %d: ", i + 1);
    scanf("%f", &num);
    sum += num;  // Add the current number to the running sum
}

The program enters a loop to input N numbers. In each iteration, the user is prompted to enter a number, which is stored in the variable num. The number is then added to the running sum.

Step 5: Calculate Average

average = sum / n;

After inputting all numbers, the average is calculated by dividing the sum by the number of elements (N).

Step 6: Output

printf("The average is: %.2f\n", average);

Finally, the calculated average is displayed to the user with two decimal places.

Step 7: Return Statement

return 0;

The return 0; statement indicates that the program executed successfully. A non-zero value would signify an error.

This program allows users to input any number of elements and calculates their average, providing a versatile solution for varying datasets.

Using Functions for Modularity

For a more modular and readable code, let’s encapsulate the input, calculation, and output processes into separate functions.

#include <stdio.h>

// Function to get input from the user
void getInput(float *num1, float *num2, float *num3) {
    printf("Enter three numbers: ");
    scanf("%f %f %f", num1, num2, num3);
}

// Function to calculate the average
float calculateAverage(float num1, float num2, float num3) {
    return (num1 + num2 + num3) / 3;
}

// Function to display the result
void displayResult(float average) {
    printf("The average is: %.2f\n", average);
}

int main() {
    float num1, num2, num3, average;

    // Input
    getInput(&num1, &num2, &num3);

    // Calculation
    average = calculateAverage(num1, num2, num3);

    // Output
    displayResult(average);

    return 0;
}

Now, the main function becomes more readable, with the actual logic encapsulated in separate functions.

The Whole Program using Pointers

Before delving into the intricacies of pointers, let’s glance at the complete program:

#include <stdio.h>

// Function to get input from the user
void getInput(float *num1, float *num2, float *num3) {
    printf("Enter three numbers: ");
    scanf("%f %f %f", num1, num2, num3);
}

// Function to calculate the average using pointers
void calculateAverage(float *num1, float *num2, float *num3, float *average) {
    *average = (*num1 + *num2 + *num3) / 3;
}

// Function to display the result
void displayResult(float *average) {
    printf("The average is: %.2f\n", *average);
}

int main() {
    float num1, num2, num3, average;

    // Input
    getInput(&num1, &num2, &num3);

    // Calculation using pointers
    calculateAverage(&num1, &num2, &num3, &average);

    // Output
    displayResult(&average);

    return 0;
}

Breaking Down the Code with Pointers

Step 1: Modified Input Function with Pointers

void getInput(float *num1, float *num2, float *num3) {
    printf("Enter three numbers: ");
    scanf("%f %f %f", num1, num2, num3);
}

Here, we use pointers (*num1, *num2, *num3) to directly modify the values at the memory addresses they point to.

Step 2: Calculate Average Using Pointers

void calculateAverage(float *num1, float *num2, float *num3, float *average) {
    *average = (*num1 + *num2 + *num3) / 3;
}

The calculation of the average now utilizes pointers, allowing direct access and modification of the values.

Step 3: Display Result with Pointers

void displayResult(float *average) {
    printf("The average is: %.2f\n", *average);
}

The displayResult function takes a pointer to the average and directly accesses the value stored at that memory location.

Advanced Code with Error Handling Using Pointers

Enhancing the program with error handling and pointers can be achieved seamlessly:

#include <stdio.h>

// Function to get input from the user with error handling
int getInput(float *num1, float *num2, float *num3) {
    printf("Enter three numbers: ");

    // Error handling for non-numeric input
    if (scanf("%f %f %f", num1, num2, num3) != 3) {
        printf("Invalid input. Please enter numeric values.\n");
        return 1;  // Indicates an error
    }

    return 0;  // Input successful
}

// Function to calculate the average using pointers
void calculateAverage(float *num1, float *num2, float *num3, float *average) {
    *average = (*num1 + *num2 + *num3) / 3;
}

// Function to display the result with pointers
void displayResult(float *average) {
    printf("The average is: %.2f\n", *average);
}

int main() {
    float num1, num2, num3, average;

    // Input with error handling
    if (getInput(&num1, &num2, &num3) != 0) {
        return 1;  // Exit with an error code
    }

    // Calculation using pointers
    calculateAverage(&num1, &num2, &num3, &average);

    // Output with pointers
    displayResult(&average);

    return 0;
}

Now, our program not only utilizes pointers for efficient memory management but also incorporates error handling for a more robust solution.

Conclusion

Congratulations! You’ve just delved into the intricacies of a seemingly simple C program to find the average of three numbers. Along the way, we’ve explored the basic implementation, dissected the code step by step, added error handling for a more robust solution, and even ventured into the realm of modular programming by using functions. Armed with this knowledge, you’re better equipped to tackle more complex programming challenges and appreciate the elegance of C. Happy coding!

RELATED ARTICLES
- Advertisment -

Most Popular