Skip to main content

6. Mathematical Operations on Arrays

6.1 Statistical Operations

6.1.1 Sum and Average

#include <stdio.h>

int sum_array(int arr[], int size) {
    int sum = 0;
    for (int i = 0; i < size; i++) {
        sum += arr[i];
    }
    return sum;
}

double average_array(int arr[], int size) {
    if (size == 0) return 0.0;
    return (double)sum_array(arr, size) / size;
}

// Usage
int main() {
    int scores[] = {85, 92, 78, 96, 88};
    int size = 5;
    
    int total = sum_array(scores, size);
    double avg = average_array(scores, size);
    
    printf("Total: %d\n", total);
    printf("Average: %.2f\n", avg);
    
    return 0;
}

6.1.2 Standard Deviation

#include <math.h>

double standard_deviation(int arr[], int size) {
    if (size <= 1) return 0.0;
    
    double mean = average_array(arr, size);
    double sum_squared_diff = 0.0;
    
    for (int i = 0; i < size; i++) {
        double diff = arr[i] - mean;
        sum_squared_diff += diff * diff;
    }
    
    return sqrt(sum_squared_diff / (size - 1));
}

6.2 Array Comparison

6.2.1 Check if Arrays are Equal

#include <stdbool.h>

bool arrays_equal(int arr1[], int arr2[], int size) {
    for (int i = 0; i < size; i++) {
        if (arr1[i] != arr2[i]) {
            return false;
        }
    }
    return true;
}

6.2.2 Element-wise Operations

void add_arrays(int arr1[], int arr2[], int result[], int size) {
    for (int i = 0; i < size; i++) {
        result[i] = arr1[i] + arr2[i];
    }
}

void multiply_array_scalar(int arr[], int size, int scalar) {
    for (int i = 0; i < size; i++) {
        arr[i] *= scalar;
    }
}