#define MAX 10
int a[MAX];
int rand_seed=10;
int rand() /* from K&R - returns random number between 0 and 32767.*/
{
rand_seed = rand_seed * 1103515245 +12345;
return (unsigned int)(rand_seed / 65536) % 32768;
}
void main()
{
int i,t,x,y;
/* fill array */
for (i=0; i < MAX; i++)
{
a[i]=rand();
printf("%d\n",a[i]);
}
/* more stuff will go here in a minute */
}
This code contains several new concepts, although the lines #include and #define should be familiar to you. The line int a[MAX]; shows you how to declare an array of integers in C. As an example, the declaration int a[10]; is declared like this in Pascal:
a:array [0..9] of integer;
All arrays start at index zero and go to n-1 in C. Thus, int a[10]; contains 10 elements, and the largest valid index is 9. Unlike Pascal, C offers no way to change the range of index values. Also note that because of the position of the array a, it is global to the entire program.
The line int rand_seed=10 also declares a global variable, this time named rand_seed. that is initialized to 10 each time the program begins. This value is the starting seed for the random number code that follows. In a real random number generator, the seed should initialize as a random value, such as the system time. Here, the rand function will produce the same values each time you run the program.
The line int rand() is a function declaration. The equivalent function declaration looks like this in Pascal:
function rand:integer;
The rand function accepts no parameters and returns an integer value.
The four lines that follow implement the rand function. We will ignore them for now.
The main function is normal. Four local integers are declared, and the array is filled with 10 random values using a for loop. Note that arrays are indexed exactly as they are in Pascal.
Now add the following code in place of the more stuff ... comment:
/* bubble sort the array */
for (x=0; x < MAX-1; x++)
for (y=0; y < MAX-x-1; y++)
if (a[y] > a[y+1])
{
t=a[y];
a[y]=a[y+1];
a[y+1]=t;
}
/* print sorted array */
printf("--------------------\n");
for (i=0; i < MAX; i++)
printf("%d\n",a[i]);
This code sorts the random values and prints them in sorted order.
No comments:
Post a Comment