I don't understand the part about sorting the array. I know I am misunderstanding it, but I have been trying to understand it for quite some time and its not making sense to me.Code:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h> int main() { int i,j; double a[9]; printf ("This program determines the middle value\n"); printf ("of nine real numbers that you enter from the keyboard\n"); for (i = 0; i < 9; i++) { printf ("%d: ", i); scanf("%lg", &a[i]); } // Print the numbers printf ("You entered:\n"); for (i = 0; i < 9; i++) { printf ("%d: %lg\n", i, a[i]); } printf ("\n\n"); // Sort the array for (i = 0; i < 8; i++) { for (j = i+1; j < 9; j++) { if (a[j] < a[i]) { // Exchange them double temp = a[j]; a[j] = a[i]; a[i] = temp; } } } printf ("Sorted array:\n"); for (i = 0; i < 9; i++) { printf ("%d: %lg\n", i, a[i]); } printf ("\n\n"); printf ("The middle value is %lg\n", a[4]); getchar(); getchar(); return 0; }
For example: Say these are my array values
a[0]=5
a[1]=3
a[2]=2
a[3]=1
a[4]=7
a[5]=8
a[6]=9
a[7]=2
a[8]=3
This is how I am interpreting the program:
Is a[1] < a[0]? If so, switch them.
Since a[0] = 5 and a[1] = 3 this is true. Thus, I switch them and get:
a[0] = 3 and a[1] = 5.
Then i and j are both incremented to get the following:
is a[2] < a [1]? If so switch them.
a[1] is now 5, correct? Thus, a[1] IS larger than a[2]. So we switch them.
a[1] = 2 and a[2] = 5.
I continued, but there is already a problem here.
So far the array is a[0]=3, a[1] = 2, and a[2] = 5.
This is not sorted already from low to high. How exactly is this program taking values from a[8] for example and comparing them with a[2]?
I am just having trouble understanding this. I apologize for the long post, but I would really appreciate it if anyone can tell me exactly whats going on.
Thanks!
-Frankie



LinkBack URL
About LinkBacks



