Classes/Fall 2024/csci218/Labs/Lab11/lab11.c

138 lines
2.9 KiB
C

/* Name: Garrett Haldrup
# lab11.c
# Purpose: Solves problems assigned in Lab 11
*/
#include <stdio.h>
#include <math.h>
#include <assert.h>
float findMax(float array[], int n);
float findMin(float array[], int n);
float getMean(float array[], int n);
float getStd(float array[], int n);
void raiseWages(float wages[], float raises[], int n);
void printArray(float array[], int n);
int main() {
printf("This program will calculate the max, min, mean, and std of a number set\n");
printf("It will also update a wages array through a function call\n\n");
float result;
float testFloats[] = {85, 93.3, 90.5};
float wages[] = {15.00, 14.75, 15.00, 19.50, 13.00};
float raises[] = { 1.00, 2.00, 1.50, 0.00, 1.50};
float newWages[] = {16, 16.75, 16.5, 19.5, 14.5};
int testFloatSize = sizeof(testFloats)/sizeof(testFloats[0]);
int wageSize = sizeof(wages)/sizeof(wages[0]);
result = findMax(testFloats, testFloatSize);
assert(result - 93.3 <= 0.001);
printf("Max of set is: %.1f\n", result);
printf("Pass!---------------------------------------------------\n");
result = findMin(testFloats, testFloatSize);
assert(result - 85.0 <= 0.001);
printf("Min of set is: %.1f\n", result);
printf("Pass!---------------------------------------------------\n");
result = getMean(testFloats, testFloatSize);
assert(result - 89.6 <= 0.001);
printf("Mean of set is: %.1f\n", result);
printf("Pass!---------------------------------------------------\n");
result = getStd(testFloats, testFloatSize);
assert(result - 3.4477 <= 0.001);
printf("Std of set is: %.1f\n", result);
printf("Pass!---------------------------------------------------\n");
printf("\n");
raiseWages(wages, raises, wageSize);
for (int i = 0; i < wageSize; i++) {
printf("wages[%d] = %.2f = %.2f\n", i, wages[i], newWages[i]);
assert(wages[i] - newWages[i] <= 0.000001);
printf("Pass!---------------------------------------------------\n");
}
printArray(wages, wageSize);
return 0;
}
float findMax(float array[], int n) {
float max = array[0];
for (int i = 1; i < n; i++) {
if (array[i] > max) {
max = array[i];
}
}
return max;
}
float findMin(float array[], int n) {
float min = array[0];
for (int i = 1; i < n; i++) {
if (array[i] < min) {
min = array[i];
}
}
return min;
}
float getMean(float array[], int n) {
float sum = 0;
for (int i = 0; i < n; i++) {
sum += array[i];
}
return sum / n;
}
float getStd(float array[], int n) {
float sum = 0;
float mean = getMean(array, n);
for (int i = 0; i < n; i++) {
sum += pow(array[i] - mean, 2);
}
return sqrt(sum / n);
}
void raiseWages(float wages[], float raises[], int n) {
for (int i = 0; i < n; i++) {
wages[i] += raises[i];
}
}
void printArray(float array[], int n) {
printf("{%.2f", array[0]);
for (int i = 1; i < n; i++) {
printf(", %.2f", array[i]);
}
printf("}\n");
}