I have 12 numbers in a file. The numbers are for Janaruar, Febuary, March, and so on. I plan to use an array and I can scan the numbers in and find the average, sum, highest, lowest, and so on but I need to have the program display, for example, "highest number was Janaury with 123". not just display 123 as the highest number. Also my program is not display the data in order. But everything else is working.
What I have tried:
#include<stdio.h>
#include<stdlib.h>
#define SIZE 12
#define FREQ_SIZE 101
void printData (const float values[], int num_values);
float findLargest (const float values[], int num_values);
float findSmallest (const float values[], int num_values);
void findTotAvg (const float values[], int num_values, float * total, float * average);
void makeFreq (const float values[], int num_values, int freq_ary[], int freq_size);
int readData (float values[], int max_size);
int findMode (const int freq_ary[], int freq_size);
void bubbleSort(float values[], int num_values);
int main ()
{
float values[SIZE];
int freq_ary[FREQ_SIZE]={0};
float total, average, largest, smallest, median;
int num_values, mode;
int i;
num_values = readData (values, SIZE);
findTotAvg (values, num_values, &total, &average);
findLargest (values, SIZE);
largest = findLargest (values, SIZE);
findSmallest (values, SIZE);
smallest = findSmallest (values, SIZE);
mode = findMode(freq_ary, FREQ_SIZE);
bubbleSort(values,num_values);
if(num_values % 2 == 0)
{ median = (values[num_values/2] + values[num_values/2+1])/2;
}
else
{ median = values[num_values/2+1];
}
printf ("Total: %5.1f\n", total);
printf ("Average: %5.1f\n", average);
printf ("Largest: %5.1f\n", largest);
printf ("Smallest: %5.1f\n", smallest);
printf ("Median: %5.1f\n", median);
printf ("\n\nSorted marks : \n\n");
printf (values,num_values);
return 0;
}
int readData (float values[], int max_size)
{
FILE * inFile;
int num_values = 0;
int result;
float temp;
inFile = fopen ("C:\\Users\\Windows User\\Desktop\\dogs.txt", "r");
if (!inFile)
{
printf ("Error opening data file!\n");
return 100;
}
num_values = 0;
result = fscanf(inFile, "%f", &temp);
while (result == 1 && num_values <= max_size && !feof(inFile))
{
if(temp >=0.0 && temp <= 100.0) values[num_values] = temp;
num_values++;
result = fscanf(inFile, "%f", &temp);
}
return num_values;
fclose(inFile);
}
void printData (const float values[], int num_values)
{
int i;
for (i=0; i < num_values; ++i)
{
printf ("%f\n", values[i]);
}
printf("\n\n");
}
float findLargest (const float values[], int num_values)
{
float largest;
int i;
largest = values[0];
for (i=1; i < num_values; ++i)
{
if (values[i] > largest)
{
largest = values[i];
}
}
return largest;
}
float findSmallest (const float values[], int num_values)
{
float smallest;
int i;
smallest = values[0];
for (i=1; i < num_values; ++i)
{
if (values[i] < smallest)
{
smallest = values[i];
}
}
return smallest;
}
void findTotAvg (const float values[], int num_values, float * total, float * average)
{
int i;
*total = 0;
for (i=0; i < num_values; ++i)
{
*total = *total + values[i];
}
*average = *total / num_values;
}
void makeFreq (const float values[], int num_values, int freq_ary[], int freq_size)
{
int f, i;
for (f=0; f < freq_size; f++)
freq_ary[f] =0;
for (i=0; i < num_values; i++)
{
freq_ary[(int)(values[i])]++;
}
}
int findMode (const int freq_ary[], int freq_size)
{
int mode;
int i;
mode = 0;
for (i=1; i < freq_size; ++i)
{
if (freq_ary[i] > freq_ary[mode])
{
mode = i;
}
}
return mode;
}
void bubbleSort(float values[], int num_values){
int i,j;
float temp;
for(i=0;i<num_values;i++){ for(j="0;j<num_values-i-1;j++){" if(values[j]=""> values[j+1]){
temp = values[j];
values[j] = values[j+1];
values[j+1] = temp;
}
}
}
}