Here is my program...
Code:
/* Asks the operator to input 10 numbers and then presents a menu
giving the option to sort in ascending or descending order */
#include <stdio.h>
#include <stdlib.h>
#define MAX 1000 // max size of input array
void mainMenu(void); // show main menu
void getNumber(char*); // get a char from keyboard
void convertToInt(char*, int*, int); // convert keyboard char to int
void sortTheNumberAsc(int *); // sort the number in ascending order
void sortTheNumberDes(int *); //sort the number in descending order
int comparison(const void *, const void *); // used for function qsort
int endProgram(void);
int main()
{
char inputNumber[MAX] = {0}; // numbers from operator entered as chars
int numbersToSort[MAX] = {0}; // numbers from operator after conversion to int
int i, c, d; // i is for looping, c for character input, d for decision for asc/des
int j = 1; // for main program loop
while (j == 1)
{
mainMenu();
for (i = 0; i < MAX; ++i)
{
inputNumber[i] = 0;
numbersToSort[i] = 0;
}
for (i = 0; i < 10; ++i)
{
printf("\nEnter number %d: ", i + 1);
getNumber(inputNumber);
convertToInt(inputNumber, numbersToSort, i);
}
printf("1 - Ascending\n2 - Descending\n");
while ((c=getchar()) && c != '\n' && c != EOF)
d = c;
if (d == '1')
sortTheNumberAsc(numbersToSort);
else
sortTheNumberDes(numbersToSort);
j = endProgram();
}
}
void mainMenu(void)
{
printf("Enter numbers one at a time and then specify ascending sort or descending sort.\n");
}
void getNumber(char *inputNumber)
{
int i, c;
i = 0;
while ((c= getchar()) && c != '\n' && c != EOF)
{
inputNumber[i] = c;
++i;
}
}
void convertToInt(char *inputNumber, int *numbersToSort, int i)
{
numbersToSort[i] = atoi(inputNumber);
}
void sortTheNumberAsc(int *numbersToSort)
{
int i;
qsort(numbersToSort, sizeof(numbersToSort), sizeof(numbersToSort[0]), comparison);
for (i = 0; i <10; ++i)
printf("%d\n", numbersToSort[i]);
}
void sortTheNumberDes(int *numbersToSort)
{
int i;
qsort(numbersToSort, sizeof(numbersToSort), sizeof(numbersToSort[0]), comparison);
for (i = 9; i >=0; --i)
printf("%d\n", numbersToSort[i]);
}
int comparison ( const void *a, const void *b)
{
return (*(int*)a - *(int*)b) ;
}
int endProgram(void)
{
int d, c;
printf("Try again? y/n: ");
while ((c=getchar()) && c != '\n' && c != EOF)
d = c;
if (d == 'y')
return 1;
else
return 0;
}