944,150 Members | Top Members by Rank

Ad:
  • C++ Discussion Thread
  • Unsolved
  • Views: 4899
  • C++ RSS
You are currently viewing page 1 of this multi-page discussion thread
Nov 29th, 2006
0

Game: Robots (Class, Constructors, etc.)

Expand Post »
I'm also working on a game project, and I'm stuck. I guess I'll have to post the specs so you guys can see what I have to do.

Here are the specs:

Quote ...
The valley floor can be viewed as a 10 by 10 grid. The northwest corner (upper left on the screen display) is consider to have coordinates (0,0). The northeast corner (upper right) is (0,9), the southwest is (9,0) and the southeast is (9,9). At any time, each robot is at one of the 100 grid points, facing north, east, south, or west. More than one robot may occupy the same spot. Each time a step elapses in the history of the valley, every robot with any energy remaining may turn and then move one grid unit in the direction it is facing. A robot starts out with 60 units of energy, and each attempt to move costs it one unit of energy. A grid point in the valley may contain an energy source, and if a robot arrives at such a point, its energy level goes back up to 60.

The program skeleton you are to flesh out defines three classes that represent the three kinds of objects this program works with: Valley, Robot, and EnergySource. Details of the interface to these classes are in the program skeleton, but here are the essential responsibilites of each class:
Valley

* When a valley object is created, it has no robots or energy sources.
* When a valley object goes away, any robots or energy sources it contains must be destroyed.
* A robot may be created and added to a valley object.
* An energy source may be created and added to a valley object.
* A valley object may be displayed on the screen, showing the locations of the robots and energy sources, and the energy remaining for each robot in the valley. (If a robot is at an energy source, only the robot appears in the display; if two robots are at the same spot, only one of them appears in the display.)
* Given a robot, a valley object may be asked if there is another robot at the same location as the one given.
* A valley object may be asked if there is an energy source at a given position.
* A valley object may be told to direct each robot in the valley to take a step.

EnergySource

* This simple class merely records and reports an energy source's position.

Robot

* A robot is created with a name, a position, and the direction it is initially facing. A robot starts life with 60 energy units.
* A robot may be told to take a step. A robot with no remaining energy will not move. Otherwise, the robot will attempt to move. In detail, this means: With 1/3 probability, the robot will pick a random direction to face; otherwise, it will stay facing in its current direction. The robot will attempt to move one grid unit in the direction it is facing. (It may not be able to move if its way is blocked by the mountains at the edge of the valley.) The move attempt costs one energy unit. If the robot moves onto an energy source, it is recharged to 60 energy units. If a robot with at least 30 energy units moves onto a spot occupied by a robot with 0 units, it will transfer 10 units to that other robot to give it a chance to get to an energy source.
* Robots have no memory of where they've been or what they've seen there. Robots don't know where other robots are; at best, a robot may find out from the valley object it belongs to what other robot, if any, is where it's currently standing.
* If when a robot takes a step, it arrives at a spot where there are at least two other robots, we'll keep things simple: it finds out about one of them and donates energy if appropriate. Then it's done with its step. It does not try to check for other robots at that spot.

You must not make any deletions, additions, or changes to the public interface of any of the classes -- we're depending on them staying the same so that we can test your programs.
I will post my code below.
Reputation Points: 10
Solved Threads: 0
Junior Poster in Training
aznballerlee is offline Offline
73 posts
since Oct 2006
Nov 29th, 2006
0

Re: Game: Robots (Class, Constructors, etc.)

C++ Syntax (Toggle Plain Text)
  1. // Portions you are to complete are marked with a TODO: comment.
  2. // The first thing you probably want to do is implement the trivial
  3. // functions. Then get Valley::addEnergySource and Valley::display going.
  4. // That gives you more flexibility in the order you tackle the rest
  5. // of the functionality.
  6.  
  7. #include <iostream>
  8. #include <string>
  9. #include <cstdlib>
  10. #include <ctime>
  11. using namespace std;
  12.  
  13. ///////////////////////////////////////////////////////////////////////////
  14. // Manifest constants
  15. ///////////////////////////////////////////////////////////////////////////
  16.  
  17. const int NROWS = 10; // number of rows in the valley
  18. const int NCOLS = 10; // number of columns in the valley
  19. const int MAXROBOTS = 10; // max number of robots allowed
  20. const int MAXSOURCES = NROWS*NCOLS; // max number of energy sources
  21. const int FULL_ENERGY = 60; // number of units when fully charged
  22. const int SHARE_THRESHHOLD = 30; // will share energy if have at least this
  23. const int SHARE_AMOUNT = 10; // amount of energy to share
  24.  
  25. ///////////////////////////////////////////////////////////////////////////
  26. // Type definitions
  27. ///////////////////////////////////////////////////////////////////////////
  28.  
  29. enum Dir {
  30. NORTH, EAST, SOUTH, WEST
  31. };
  32.  
  33. class Valley; // This is needed to let compiler know that Valley is a type
  34. // name, since it's mentioned in the Robot declaration.
  35.  
  36. class Robot
  37. {
  38. public:
  39. // Constructor
  40. Robot(string nm, Valley* vp, int r, int c, Dir d);
  41.  
  42. // Accessors
  43. string name() const;
  44. int energy() const;
  45. int row() const;
  46. int col() const;
  47. Dir dir() const;
  48.  
  49. // Mutators
  50. bool step();
  51.  
  52. private:
  53. string m_name;
  54. int m_energy;
  55. int m_row;
  56. int m_col;
  57. Dir m_dir;
  58. Valley* m_valley;
  59. };
  60.  
  61. class EnergySource
  62. {
  63. public:
  64. // Constructor
  65. EnergySource(int r, int c);
  66.  
  67. // Accessors
  68. int row() const;
  69. int col() const;
  70.  
  71. private:
  72. int m_row;
  73. int m_col;
  74. };
  75.  
  76. class Valley
  77. {
  78. public:
  79. // Constructor
  80. Valley();
  81. ~Valley();
  82.  
  83. // Accessors
  84. Robot* otherRobotAt(Robot* rp) const;
  85. bool energySourceAt(int r, int c) const;
  86. void display() const;
  87.  
  88. // Mutators
  89. bool addRobot(string name, int r, int c, Dir dir);
  90. bool addEnergySource(int r, int c);
  91. bool step();
  92.  
  93. private:
  94. Robot* m_robots[MAXROBOTS];
  95. int m_nrobots;
  96. EnergySource* m_sources[MAXROBOTS];
  97. int m_nsources;
  98. };
  99.  
  100. ///////////////////////////////////////////////////////////////////////////
  101. // Robot implementation
  102. ///////////////////////////////////////////////////////////////////////////
  103.  
  104. Robot::Robot(string nm, Valley* vp, int r, int c, Dir d)
  105. : m_name(nm), m_energy(FULL_ENERGY), m_row(r), m_col(c), m_dir(d), m_valley(vp)
  106. {
  107. // Since the first character of the Robot's name shows up in the
  108. // display, there had better be a first character.
  109. if (nm.size() == 0)
  110. {
  111. cout << "***** A robot must have a non-empty name!" << endl;
  112. exit(1);
  113. }
  114. if (r < 0 || r >= NROWS || c < 0 || c >= NCOLS)
  115. {
  116. cout << "***** Robot created with invalid coordinates (" << r << ","
  117. << c << ")!" << endl;
  118. exit(1);
  119. }
  120. }
  121.  
  122. // TODO: Implement the other four accessor functions. These should be trivial.
  123. string Robot::name() const
  124. {
  125. return m_name;
  126. }
  127.  
  128. int Robot::energy() const
  129. {
  130. return m_energy;
  131. }
  132.  
  133. int Robot::row() const
  134. {
  135. return m_row;
  136. }
  137.  
  138. int Robot::col() const
  139. {
  140. return m_col;
  141. }
  142.  
  143. Dir Robot::dir() const
  144. {
  145. return m_dir;
  146. }
  147.  
  148. // TODO: Implement the step function. Here's an outline:
  149.  
  150. bool Robot::step()
  151. {
  152. // If the robot has no energy left, return false
  153. // Otherwise,
  154. // Randomly change direction with probability 1/3
  155. if (rand() % 3 == 0) // 1/3 probability to pick a direction
  156. m_dir = Dir(rand() % 4); // pick a random direction
  157. // Attempt to move one step in the direction we're currently facing.
  158. // (E.g., to move north, decrement the row coordinate.) If we can't
  159. // move in that direction, don't move.
  160. switch (m_dir)
  161. {
  162. case NORTH:
  163. // TODO: Move one step north, if possible.
  164. break;
  165. case SOUTH:
  166. case WEST:
  167. case EAST:
  168. // TODO: Implement the other movements
  169. break;
  170. }
  171. // The attempt to move consumes one unit of energy.
  172. // If as a result of the attempt to move, the robot is at an energy
  173. // source, it's recharged to the FULL_ENERGY level.
  174. // If at this spot there's another robot whose energy level is 0,
  175. // then if we have at least SHARE_THRESHHOLD units of energy,
  176. // transfer SHARE_AMOUNT units to that other robot. (If there
  177. // are two or more dead robots here, we donate to only one.)
  178. // Return true, indicating the robot attempted to move.
  179. return true;
  180. }
  181.  
  182. ///////////////////////////////////////////////////////////////////////////
  183. // EnergySource implementations
  184. ///////////////////////////////////////////////////////////////////////////
  185.  
  186. // TODO: Implement the constructor
  187. // EnergySource(int r, int c)
  188. // The constructed EnergySource's location will be at coordinates (r,c).
  189.  
  190. EnergySource::EnergySource(int r, int c)
  191. : m_row(r), m_col(c)
  192. {
  193. if (r < 0 || r >= NROWS || c < 0 || c >= NCOLS)
  194. {
  195. cout << "***** EnergySource created with invalid coordinates (" << r << ","
  196. << c << ")!" << endl;
  197. exit(1);
  198. }
  199. }
  200.  
  201. // TODO: Implement the two accessor functions. These should be trivial.
  202. int EnergySource::row() const
  203. {
  204. return m_row;
  205. }
  206.  
  207. int EnergySource::col() const
  208. {
  209. return m_col;
  210. }
  211.  
  212. ///////////////////////////////////////////////////////////////////////////
  213. // Valley implementations
  214. ///////////////////////////////////////////////////////////////////////////
  215.  
  216. Valley::Valley()
  217. : m_nrobots(0), m_nsources(0)
  218. {
  219. // TODO: Implement the constructor
  220. // Make the valley have no robots or energy sources.
  221. }
  222.  
  223. Valley::~Valley()
  224. {
  225. // delete [] ;
  226. // TODO: Implement the destructor
  227. // Delete any dynamically allocated objects held by the Valley.
  228. }
  229.  
  230. // TODO: Implement the accessors
  231. //
  232. // Robot* otherRobotAt(Robot* rp) const
  233. // If there is at least one robot (other than the one rp points to)
  234. // at the same (r,c) coordinates as the one rp points to, return a
  235. // pointer to the one of those other robots with the least amount
  236. // of energy remaining (if there's a tie, any one of the tied robots
  237. // will do); otherwise, return NULL.
  238. //
  239. // bool energySourceAt(int r, int c) const
  240. // If there is an energy source at coordinates (r,c), return true;
  241. // otherwise, return false.
  242. //
  243. // Fill in the rest of the display function
  244.  
  245. void Valley::display() const
  246. {
  247. char grid[NROWS][NCOLS];
  248. int r, c;
  249.  
  250. // fill the grid with dots
  251. for (r = 0; r < NROWS; r++)
  252. for (c = 0; c < NCOLS; c++)
  253. grid[r][c] = '.';
  254.  
  255. // TODO: mark each energy source with a star
  256. // for each energy source in the valley,
  257. // set the appropriate element of the grid to '*'
  258.  
  259. // TODO: indicate each robot's position
  260. // for each robot in the valley,
  261. // set the appropriate element of the grid to the first character
  262. // of the robot's name.
  263.  
  264. // Clear the screen
  265. system("cls"); // Under LINUX, try system("clear");
  266.  
  267. // Draw the grid
  268. for (r = 0; r < NROWS; r++)
  269. {
  270. for (c = 0; c < NCOLS; c++)
  271. cout << grid[r][c];
  272. cout << endl;
  273. }
  274. cout << endl;
  275.  
  276. // TODO: Write robot energy info
  277. // for each robot in the valley,
  278. // write the robot's name and remaining energy level.
  279. }
  280.  
  281. // TODO: Implement the mutators
  282.  
  283. bool Valley::addRobot(string name, int r, int c, Dir dir)
  284. {
  285. // TODO: implement addRobot
  286. // If MAXROBOTS have already been added, return false. Otherwise,
  287. // dynamically allocate a new robot whose name is name, at coordinates
  288. // (r,c) facing in direction dir. Save the pointer to the newly
  289. // allocated robot and return true. (Hint: The Valley class could
  290. // contain a private array with MAXROBOTS elements.)
  291. return true;
  292. }
  293.  
  294. bool Valley::addEnergySource(int r, int c)
  295. {
  296. // TODO: implement addEnergySource
  297. // If MAXSOURCES have already been added, return false. Otherwise,
  298. // dynamically allocate a new energy source at coordinates (r,c).
  299. // Save the pointer to the newly allocated energy source and return true.
  300. // (Hint: The Valley class could contain a private array with MAXSOURCES
  301. // elements.)
  302. return true;
  303. }
  304.  
  305. bool Valley::step()
  306. {
  307. // TODO: implement step
  308. // Have each robot in the valley step. If any of them attempted to move,
  309. // return true. If none of them did, they're all dead, so return false.
  310. return true; // This is here for now just so this will compile.
  311. }
  312.  
  313.  
  314. ///////////////////////////////////////////////////////////////////////////
  315. // main()
  316. ///////////////////////////////////////////////////////////////////////////
  317.  
  318. // You can use whatever main routine you want. In fact, try different
  319. // things that will thoroughly test your classes. This main routine is
  320. // the one that the sample executable uses.
  321.  
  322. int main()
  323. {
  324. // Initialize the random number generator
  325. srand(time(0));
  326.  
  327. // Create a valley
  328. Valley v;
  329.  
  330. // Populate it with three robots
  331. v.addRobot("Abner", 0, 0, SOUTH);
  332. v.addRobot("Betty", 9, 9, NORTH);
  333. v.addRobot("Chris", 0, 9, SOUTH);
  334.  
  335. // Add energy sources at (2,2), (2,5), (2,8), (5,2), ..., (8,8)
  336. for (int r = 2; r <= 8; r += 3)
  337. for (int c = 2; c <= 8; c += 3)
  338. v.addEnergySource(r, c);
  339.  
  340. // Step until all robots are dead, displaying the valley each time
  341. do
  342. {
  343. v.display();
  344. cout << "Press Enter to continue ";
  345. cin.ignore(100000, '\n');
  346. } while(v.step());
  347.  
  348. cout << "All robots are dead" << endl;
  349. }

And I will post my question / problem (working on one part of the function) in the next post.
Reputation Points: 10
Solved Threads: 0
Junior Poster in Training
aznballerlee is offline Offline
73 posts
since Oct 2006
Nov 29th, 2006
0

Re: Game: Robots (Class, Constructors, etc.)

I've done the robot accessors, the EnergySource constructor and accessors, and the Valley constructor.

The Valley accessor looks hard, so I'll skip that for now. I'm trying to tackle the
C++ Syntax (Toggle Plain Text)
  1. bool Valley::addEnergySource (int r, int c)
now.

I believe I'm getting ideas confused. I'll show you what I have:

the task:
C++ Syntax (Toggle Plain Text)
  1. bool Valley::addEnergySource(int r, int c)
  2. {
  3. // TODO: implement addEnergySource
  4. // If MAXSOURCES have already been added, return false. Otherwise,
  5. // dynamically allocate a new energy source at coordinates (r,c).
  6. // Save the pointer to the newly allocated energy source and return true.
  7. // (Hint: The Valley class could contain a private array with MAXSOURCES
  8. // elements.)
  9. return true;
  10. }
Here's my code:
C++ Syntax (Toggle Plain Text)
  1. if (MAXSOURCES)
  2. return false;
  3. else
  4. // ? = new Energysource();
Reputation Points: 10
Solved Threads: 0
Junior Poster in Training
aznballerlee is offline Offline
73 posts
since Oct 2006
Nov 30th, 2006
0

Re: Game: Robots (Class, Constructors, etc.)

Disregard the previous post, I have this now:
C++ Syntax (Toggle Plain Text)
  1. bool Valley::addEnergySource(int r, int c)
  2. {
  3. // TODO: implement addEnergySource
  4. // If MAXSOURCES have already been added, return false. Otherwise,
  5. // dynamically allocate a new energy source at coordinates (r,c).
  6. // Save the pointer to the newly allocated energy source and return true.
  7. // (Hint: The Valley class could contain a private array with MAXSOURCES
  8. // elements.)
  9. if (m_nsources == MAXSOURCES)
  10. return false;
  11. else
  12. {
  13. EnergySource* es = new EnergySource(r,c);
  14. return true;
  15. }
  16. }

Anyways, I'm trying to extend this example to another mutator function:
C++ Syntax (Toggle Plain Text)
  1. // TODO: implement addRobot
  2. // If MAXROBOTS have already been added, return false. Otherwise,
  3. // dynamically allocate a new robot whose name is name, at coordinates
  4. // (r,c) facing in direction dir. Save the pointer to the newly
  5. // allocated robot and return true. (Hint: The Valley class could
  6. // contain a private array with MAXROBOTS elements.)
  7. bool Valley::addRobot(string name, int r, int c, Dir dir)
  8. {
  9. if (m_nrobots == MAXROBOTS)
  10. return false;
  11. else
  12. {
  13. Robot* rob = new Robot(name, r, vp, c, dir);
  14. return true;
  15. }
  16. }
I get one compilation error, that vp is not declared (true). If I take it out, it says I can't overload wtih 4 arguments. What's the wrongdoing here?
Reputation Points: 10
Solved Threads: 0
Junior Poster in Training
aznballerlee is offline Offline
73 posts
since Oct 2006
Nov 30th, 2006
0

Re: Game: Robots (Class, Constructors, etc.)

I get one compilation error, that vp is not declared (true). If I take it out, it says I can't overload wtih 4 arguments. What's the wrongdoing here?
OK, so if this is Robot's only constructor:
C++ Syntax (Toggle Plain Text)
  1. Robot(string nm, Valley* vp, int r, int c, Dir d);
And you try to create a Robot instance like so:
C++ Syntax (Toggle Plain Text)
  1. Robot* rob = new Robot(name, r, vp, c, dir);
What makes you think that

a) the compiler will let you use a variable that you've never declared before to use a parameter for a function?

b) removing it will make the compiler omit the 3rd argument in Robot::Robot(), Valley, and just randomly play with the code?

You obviously need to pass some sort of Valley instance to Robot::Robot(), or overload the function so that you can initalize the object without a Valley object. If you choose the former, you'll need to either make one yourself, or pass it in to the function as a parameter.

Hope this helps
Team Colleague
Reputation Points: 2240
Solved Threads: 338
Vampirical Lurker
John A is offline Offline
5,055 posts
since Apr 2006
Nov 30th, 2006
0

Re: Game: Robots (Class, Constructors, etc.)


You obviously need to pass some sort of Valley instance to Robot::Robot(), or overload the function so that you can initalize the object without a Valley object. If you choose the former, you'll need to either make one yourself, or pass it in to the function as a parameter.
This is the part I don't get. I choose to create a new function, Robot::Robot() to pass the Valley stuff.

How do I do that? Do I just use one parameter (Valley* vp) and have an empty body?
Reputation Points: 10
Solved Threads: 0
Junior Poster in Training
aznballerlee is offline Offline
73 posts
since Oct 2006
Nov 30th, 2006
0

Re: Game: Robots (Class, Constructors, etc.)

This is the part I don't get. I choose to create a new function, Robot::Robot() to pass the Valley stuff.

How do I do that?
There's nothing wrong with Robot::Robot(), the problem you're having is that you're trying to call this function when you don't have a Valley object to pass to it. I haven't read all of your posts, so I don't know exactly where this is supposed to come from, but you either need to pass it as a parameter/create one, or if you want to fill in vp later, then you will need to create an overloaded constructor that lacks the vp parameter.
Team Colleague
Reputation Points: 2240
Solved Threads: 338
Vampirical Lurker
John A is offline Offline
5,055 posts
since Apr 2006
Nov 30th, 2006
0

Re: Game: Robots (Class, Constructors, etc.)

I tried something like this:
C++ Syntax (Toggle Plain Text)
  1. Robot::Robot(string nm, int r, int c, Dir d)
  2. {
  3. }

and I get a compilation error.

I finally got it to work later, when someone pointed out that I could use the this
C++ Syntax (Toggle Plain Text)
  1. bool Valley::addRobot(string name, int r, int c, Dir dir)
  2. {
  3. if (m_nrobots == MAXROBOTS)
  4. return false;
  5. else
  6. {
  7. m_robots[m_nrobots] = new Robot(name, this, r, c, dir);
  8. m_nrobots ++;
  9. return true;
  10. }
  11. }

I don't understand how that could work though.
Reputation Points: 10
Solved Threads: 0
Junior Poster in Training
aznballerlee is offline Offline
73 posts
since Oct 2006
Nov 30th, 2006
0

Re: Game: Robots (Class, Constructors, etc.)

I tried something like this:
C++ Syntax (Toggle Plain Text)
  1. Robot::Robot(string nm, int r, int c, Dir d)
  2. {
  3. }
and I get a compilation error.

I finally got it to work later, when someone pointed out that I could use the this
C++ Syntax (Toggle Plain Text)
  1. bool Valley::addRobot(string name, int r, int c, Dir dir)
  2. {
  3. if (m_nrobots == MAXROBOTS)
  4. return false;
  5. else
  6. {
  7. m_robots[m_nrobots] = new Robot(name, this, r, c, dir);
  8. m_nrobots ++;
  9. return true;
  10. }
  11. }
Silly me! I forgot that this function so happened to be inside of Valley. My apologies to you. Disregard my previous posts.
Quote ...
I don't understand how that could work though.
Simple. You obviously want to pass a pointer of the current instance of Valley to Robot::Robot().

How do you do that? The this pointer points to the current instance of Valley that you're working with, so passing it to the function makes it quick and easy.

(This is what I get for not reading entire posts before answering.)
Team Colleague
Reputation Points: 2240
Solved Threads: 338
Vampirical Lurker
John A is offline Offline
5,055 posts
since Apr 2006
Nov 30th, 2006
0

Re: Game: Robots (Class, Constructors, etc.)

Thanks for clarifying this. I'm on the right track. Just a few more tasks I believe.

Next task I tried to do, but can't think of how, is the step function. (This is inside Robot) I think knowing this would help me think of ideas for other functions:

I'm on bool Robot::step().

EDIT:
I fixed some parts of it.
C++ Syntax (Toggle Plain Text)
  1.  
  2. bool Robot::step()
  3. {
  4. // If the robot has no energy left, return false
  5. if (m_energy == 0)
  6. return false;
  7. // Otherwise,
  8. else
  9. {
  10. // Randomly change direction with probability 1/3
  11. if (rand() % 3 == 0) // 1/3 probability to pick a direction
  12. m_dir = Dir(rand() % 4); // pick a random direction
  13.  
  14. // Attempt to move one step in the direction we're currently facing.
  15. // (E.g., to move north, decrement the row coordinate.) If we can't
  16. // move in that direction, don't move.
  17. switch (m_dir)
  18. {
  19. case NORTH:
  20. // TODO: Move one step north, if possible.
  21. m_row--;
  22. break;
  23. // TODO: Implement the other movements
  24. case SOUTH:
  25. m_row++;
  26. break;
  27. case WEST:
  28. m_col--;
  29. break;
  30. case EAST:
  31. m_col++;
  32. break;
  33. }
  34. }
The second part I'm stuck on.

C++ Syntax (Toggle Plain Text)
  1. // The attempt to move consumes one unit of energy.
  2. // If as a result of the attempt to move, the robot is at an energy
  3. // source, it's recharged to the FULL_ENERGY level.
  4. m_energy--;
  5. if (m_sources[m_nsources] = new EnergySource(r,c))
  6. m_energy = FULL_ENERGY;
  7.  
  8. // If at this spot there's another robot whose energy level is 0,
  9. // then if we have at least SHARE_THRESHHOLD units of energy,
  10. // transfer SHARE_AMOUNT units to that other robot. (If there
  11. // are two or more dead robots here, we donate to only one.)
  12. // Return true, indicating the robot attempted to move.
  13. else if (// another robot's energy is 0)
  14. if (m_energy > SHARE_THRESHHOLD)
  15. // that robot's energy = SHARE_AMOUNT
  16.  
  17. return true;
}

I don't know what to stick in the parts I // out.
Last edited by aznballerlee; Nov 30th, 2006 at 9:53 pm.
Reputation Points: 10
Solved Threads: 0
Junior Poster in Training
aznballerlee is offline Offline
73 posts
since Oct 2006

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C++ Forum Timeline: program to read from a file...
Next Thread in C++ Forum Timeline: Won't Output to File





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC