
October 18th, 2004, 04:44 AM
|
|
Registered User
|
|
Join Date: Oct 2004
Posts: 2
Time spent in forums: 34 m 8 sec
Reputation Power: 0
|
|
|
Please help with programming project
Hello. I'm currently busting my rear trying to figure out this programming
project I've been given. The requirements are here:
http://www.grossmont.net/Jim.Hotz/csis296/Project%20-%20Oil%20Spill.htm
This is a good portion of the code I have, starting at the function calls in main
(ROW and COLUMN are #defines):
Code:
...Init_Water(CurrWater, barrels);
Time_Step_Water(CurrWater, NewWater, evaporation, wind);
Copy_Water(CurrWater, NewWater);
Display_Water(NewWater);
return 0;
}
void Init_Water(double CurrWater[][COLUMNS], double barrels)
{
for(int i = 0; i < ROWS; i++)
{
for(int j = 0; j < COLUMNS; j++)
CurrWater[i][j] = 0.0;
}
CurrWater[ROWS / 2][0] = barrels;
}
void Time_Step_Water(double CurrWater[][COLUMNS], double NewWater[][COLUMNS],
float evaporation, unsigned int wind)
{
double oil, stayOil;
Init_Water(NewWater, 0.0); // set NewWater to all 0's
for(int i = 0; i < ROWS; i++)
{
for(int j = 0; j < COLUMNS; j++)
{
oil = CurrWater[i][j] * (1.0 - evaporation); // volume after evaperation
stayOil = ( oil * (10.0 / (10.0 + wind))); //oil left in initial square
NewWater[i][j] += stayOil; //accumulated oil into NewWater
oil = oil - stayOil; //oil moved by wind
if(j < ROWS - 1) // if not at the far right
{
NewWater[i][j + 1] += oil * 0.40; // 40% to immediate right
if(i> 0) // if not at top, 20% to northeast
NewWater[i - 1][j + 1] += oil * 0.20;
if(i < COLUMNS - 1) // if not at bottom, 20% to southeast
NewWater[i + 1][j + 1] += oil * 0.20;
}
if(i > 0) // if not at top, 10%to north
NewWater[i - 1][j] += oil * 0.10;
if(i < COLUMNS - 1) // if not at bottom, 10% to south
NewWater[i + 1][j] += oil * 0.10;
}
}
}
void Copy_Water(double CurrWater[][COLUMNS], double NewWater[][COLUMNS])
{
for(int i = 0; i < COLUMNS; i++)
{
for(int j = 0; j < ROWS; j++)
CurrWater[i][j] = NewWater[i][j];
}
}
void Display_Water(double NewWater[][COLUMNS])
{
for(int i = 0; i < ROWS; i++)
{
for(int j = 0; j < COLUMNS; j++)
{
cout << setw(4) << setprecision(0) << fixed;
cout << NewWater[i][j] << endl;
}
}
}
I'm able to compile, but I can't get the array to display in the rows and colomns specified.
I also am not sure if my logic is correct in the Time_Step_Water function. Any help or
suggestions for this would be greatly appreciated.
|