#include <stdio.h>
#include <stdlib.h>
/* Puzzle D03 - fill an array by making each element the same integer val */
void fillArrayConst( int size, int arr[], int val )
{
int j;
for ( j=0; j<size; j++ )
{
arr[j] = val;
}
}
void printArray( int size, int arr[] )
{
const int N = 10;
int j;
for ( j=0; j<size; j++ )
{
if ( j%N == N-1 )
printf("%4d\n", arr[j] );
else
printf("%4d ", arr[j] );
}
}
const int SIZE = 100;
int main(int argc, char *argv[])
{
int x[ SIZE ];
fillArrayConst( SIZE, x, 7 );
printArray( SIZE, x );
printf("\n");
return 0;
}
A more elaborate testing program follows.
It it, the user can specify the array size and the fill value.
The array is allocated as a local variable
in the function
tester().
This means it is created out of main memory on the run-time stack.
This works for gcc, but does not work for some older compilers.
#include <stdio.h>
#include <stdlib.h>
/* Puzzle D03improved - fill an array by making each element the same integer val */
void fillArrayConst( int size, int arr[], int val )
{
int j;
for ( j=0; j<size; j++ )
{
arr[j] = val;
}
}
void printArray( int size, int arr[] )
{
const int N = 10;
int j;
for ( j=0; j<size; j++ )
{
if ( j%N == N-1 )
printf("%4d\n", arr[j] );
else
printf("%4d ", arr[j] );
}
}
void tester( int size, int val )
{
int x[ size ];
fillArrayConst( size, x, val );
printArray( size, x );
printf("\n");
}
int main(int argc, char *argv[])
{
int sz, fill;
printf("Size of the array: ");
scanf( "%d", &sz );
printf("Fill value: ");
scanf( "%d", &fill );
tester( sz, fill );
return 0;
}