Sorting and Displaying Array Project

The assignment instructions were:
Design a program that will input numeric data type double into an array. Do this function by designing a function called inputData . Then the program should sort the data and display the whole content of the array. Sort the array by using bubble sort (you can Google that/ or use the qsort function ) and design a separate function (call it displayArray) to display the contents of the array.


Now the problem is, he never has taught anything on bubble sort, just said it look it up. It might be easier for some people but I have been playing around with this for a couple hours, and just can't figure out what I am doing wrong.

I can get the array assigned the problem comes with sorting it, am I even on the right track?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  #include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>

double inputData(double data[], int *pDataCount) {
	printf("Enter a double value: ");
	scanf("%lf", &data[*pDataCount]);
	(*pDataCount)++;
	return data[*pDataCount - 1];
}

void displayArray(double data[], int dataCount) {
	int i = 0;
	for (i = 0; i < dataCount; i++) {
		printf("%lf \n", data[i]);
	}

}

main() {
	double myArray[100], input, a, b, c;
	int dataCount = 0, arraySize, j, x;
	int k = 0;
	bool inOrder = false;

	printf("How big is your array? ");
	scanf("%i", &arraySize);

	for (j = 0; j < arraySize; j++) {

		input = inputData(myArray, &dataCount);
	}

	while (inOrder == false) {
		for (x = 0; x < arraySize; ++x) {
			if (myArray[x] > myArray[x + 1]) {
				a = myArray[x];
				b = myArray[x + 1];
				myArray[x] = b;
				myArray[x + 1] = a;
				k++;
			}
			if (k == 0) {
				inOrder = true;
			}
			else {
				k = 0;
			}
		}

	}

	displayArray(myArray, dataCount);

	system("Pause");

}
Watch this video to learn Bubble Sort: https://www.youtube.com/watch?v=Jdtq5uKz-w4
Hi,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
while (inOrder == false)
{
		for (x = 0; x < arraySize; ++x) {
			if (myArray[x] > myArray[x + 1]) {
				a = myArray[x];
				b = myArray[x + 1];
				myArray[x] = b;
				myArray[x + 1] = a;
				k++;
			}
			if (k == 0) {
				inOrder = true;
			}
			else {
				k = 0;
			}
		}
	}


==>
1
2
3
4
5
6
7
8
9
10
11
12
while (inOrder == false)
{
	for (int i = 0; i < arraySize; ++i) 
	for (int j = 0; j < arraySize - 1; ++j) 
	if (myArray[j] > myArray[j + 1])
	{
		double t = myArray[j];
		myArray[j] = myArray[j + 1];
		myArray[j + 1] = t;
	}
	inOrder = true;
}
Last edited on
Does that help you? :)
==>


1
2
3
4
5
6
7
8
9
10
	for (int i = 0; i < arraySize; ++i) {
	    for (int j = 0; j < arraySize - 1; ++j) {
	        if (myArray[j] > myArray[j + 1]) {
		     double t = myArray[j];
		     myArray[j] = myArray[j + 1];
		      myArray[j + 1] = t;
	        }

            }
        }


main always returns an int:

1
2
3
4
int main() 
{

}




Prefer to to declare and initialise your variables 1 per line of code. I

Always initialise your variables to something That's a golden rule, not doing it has caught out many a player - both young and old :+)

If you are going to use scanf, make sure to check the value it returns, so you can see if it worked.
Last edited on
Topic archived. No new replies allowed.