This is an incomplete answer... I'm not at my compiler...
void program (); - When you put this inside main, you leave out the return type (void), and you place it in the sequence where you "call" it.
// Get user input
program(); // Go to program() function and do it!
// Show results
// Ask to loop
And... Your function needs a return type... you want it to return a cost or something, you don't want void in this case. And, you need parameters... something like...
// Function prototype
float program(float Area, float CostPerInch)
// Call program() function
Cost = program(Area, CostPerInch);
Remember variable "scope". The variables aren't avaliable inside your function unless they are passed-in as paramaters (arguements?) You can define local variables inside the function, PI for example. And, you could ask for user input inside the function... if that's what you wanted to do.
Start "small". Write the body of your main program first, compile and test it, then add a little and repeat. This makes it much easier to locate errors. You can also write "empty" functions to test compile.
[EDIT]
A function is (sort-of) like a detour. Go over there and do something. Then, come back here continue... maybe take some numbers with you, and maybe bring one number back. Now, just so I don't get flamed... Later, you'll learn that sometimes these "numbers" may be references or pointers.