/* Sort.c (c) Kari Laitinen http://www.naturalprogramming.com/ 2013-11-27 File created. 2013-11-27 Last modification. */ #include #define ARRAY_SIZE 100 void read_array_of_numbers( double array_of_numbers[], int* number_of_numbers_in_array ) { int number_index = 0 ; double number_from_keyboard ; printf( " Enter a number: " ) ; while ( ( scanf( "%lf", &number_from_keyboard ) ) && ( number_index < ARRAY_SIZE ) ) { array_of_numbers[ number_index ] = number_from_keyboard ; number_index ++ ; printf( " Enter a number: " ) ; } *number_of_numbers_in_array = number_index ; } void find_smallest_number_in_array( double array_of_numbers[], int number_of_numbers_in_array, double* smallest_number, int* index_of_smallest_number ) { int number_index ; *smallest_number = array_of_numbers[ 0 ] ; *index_of_smallest_number = 0 ; for ( number_index = 1 ; number_index < number_of_numbers_in_array ; number_index ++ ) { if ( array_of_numbers[ number_index ] < *smallest_number ) { *smallest_number = array_of_numbers[ number_index ] ; *index_of_smallest_number = number_index ; } } } void sort_to_ascending_order( double array_of_numbers[], int number_of_numbers_in_array ) { double smallest_number ; int index_of_smallest_number, number_index ; for ( number_index = 0 ; number_index < number_of_numbers_in_array - 1 ; number_index ++ ) { find_smallest_number_in_array( &array_of_numbers[ number_index ], number_of_numbers_in_array - number_index, &smallest_number, &index_of_smallest_number ) ; index_of_smallest_number += number_index ; // Now we simply put the number in current array // position to where the smallest number is, and // then put the smallest number in current position. array_of_numbers[ index_of_smallest_number ] = array_of_numbers[ number_index ] ; array_of_numbers[ number_index ] = smallest_number ; } } void print_array_of_numbers( double array_of_numbers[], int number_of_numbers_in_array ) { int number_index ; for ( number_index = 0 ; number_index < number_of_numbers_in_array ; number_index ++ ) { if ( ( number_index % 5 ) == 0 ) { printf( "\n" ) ; } printf( "%10.2f", array_of_numbers[ number_index ] ) ; } } int main() { double array_of_numbers[ ARRAY_SIZE ] ; int number_of_numbers_read ; printf( "\n This program sorts the numbers that you enter" "\n from the keyboard. The program stops asking for new" "\n numbers when you enter a letter. \n\n" ) ; read_array_of_numbers( array_of_numbers, &number_of_numbers_read ) ; sort_to_ascending_order( array_of_numbers, number_of_numbers_read ) ; print_array_of_numbers( array_of_numbers, number_of_numbers_read ) ; }