Ask Computer Engineering Expert

You are the owner of a new business idea called the Roomba!!! You are trying to determine the best/most efficient algorithm to program for your Roomba operation. You want the Roomba to not only clean the entire floor, but in the fastest time possible. Your Roomba can
only go left, right, up, and down from its current location. It has a battery life that we will simulate as a maximum number of moves. In addition, the Roomba can be placed on any spot on the floor.
Your program will take the name of a file, battery life, and starting position as command line arguments with the -f (filename), -b (battery), -v (moves before viewing), -r (starting row) and -c (starting column) options. a.out -f floorplan.txt -b 100 -r 0 -c 0 -v 1
Catch Exceptions with File I/O:
You will try to open the file for input, but if it is not present, then you must catch the exception and let the user know that he/she must supply a floor plan file in order to run the simulation. The file with the floor plan doesn't contain dimensions. It only contains the cells of floor and potential objects, indicated by 'f' or 'd' for floor (or dirty floor) and 'o' for object. For example:
f f f o
f f f o
o o f f
f f f f
For this Assignment, your floor doesn't need to have objects, it can just be a dirty floor that needs to be cleaned!
Use classes with a Template, "Is a", "Has a", and "Uses" relationship:
Here are the classes you need to have:
template
class Room {
private:
Floor f;
T *obj; //obj could be a Roomba, Person, etc.
public:
//The functionality of a room is to view it, put
//objects in it, take objects out of it, etc.
...
void clean_room() {
if(obj!=NULL)
obj->clean_floor(f);
}
};
class Floor {
private:
vector < vector > v;
int obj_row; //Holds an object's current row position
int obj_col; //Holds an object's current col position
public:
//The functionality of a floor is to create the floor
//plan, as well as determining if an object's
//position is at the edge of the room
...
};
class Roomba {
private:
int battery; //how many moves it can make
int total_moves; //total moves needed to clean
public:
//The Roomba needs to be able to clean a floor, and
//move left, right, up, down
...
};
class RandomRoomba : public Roomba {
private:
...
public:
...
};
class ...Roomba : public Roomba { //for first AI Roomba
class ...Roomba : public Roomba { //for second AI Roomba
You can decide the function names for each class and whether you need to define the Big Three for the class. However, you MUST have the class relationship, members, and functionality specified above. Be creative!!!
Simulate the Roomba:
Now, you need to simulate the Roomba cleaning the room. You know you have a Room with a Roomba that cleans a specific floor. It is your job in your simulation to find which Roomba can clean the room the fastest (or in the least amount of moves). Here is the simulation you need:
#include
#include "./Room.hpp"
#include "./RandomRoomba.h"
...
using namespace std;
void choose_roomba(Room &r) {
int choice;
cout << "Which Roomba (1 - Random, 2 - ?, 3 - ?)? ";
cin >> choice;

if(choice == 1)
r.set_roomba(new RandomRoomba);
else if(choice ==2)
...
}
void simulate_roomba() {
Room r;

choose_roomba(r);
//More setup is needed for the Room
...
r.clean_room(); //Now clean it after everything is setup
...
}
int main(int argc, char *argv[]) {
simulate_roomba();
return 0;
}
Example output:
After running a program with the file and command line arguments provided below, your program simulation might look something like the output below. (This is a very smart random!)
a.out -f floorplan.txt -b 100 -r 0 -c 0 -v 1
Which Roomba (1 - Random, 2 - ?, 3 - ?)? 1
Beginning:
r f f f
f f f f
f f f f
Move 1:
c r f f
f f f f
f f f f
Move 2:
c c r f
f f f f
f f f f
Move 3:
c c c r
f f f f
f f f f
Move 4:
c c c c
f f f r
f f f f
Move 5:
c c c c
f f f c
f f f r
Move 6:
c c c c
f f f c
f f r c
Move 7:
c c c c
f f r c
f f c c
Move 8:
c c c c
f r c c
f f c c
Move 9:
c c c c
r c c c
f f c c
Move 10:
c c c c
c r c c
f f c c
Move 11:
c c c c
c c c c
f r c c
Move 12:
c c c c
c c c c
r c c c
Entire floor visited and cleaned in 12 moves!!!
Things to consider:
? You must keep the classes, members, and functionality specified in the design above. ? Your member variables in all classes must be private or protected for encapsulation rules. ? You must have your class definitions in a .h file and your implemented classes in .cpp files.
Your template class can have interface and implementation in a .hpp file. ? You must also have your main function in a simulate_roomba.cpp file, separated from the class implementations.
? Create a Makefile for you project.
(10 pts) Extra Credit to avoid objects:
After running a program with the file and command line arguments provided above, your program simulation might look something like the output below. (This is the best random ever!)
Which Roomba (1 - Random, 2 - ?, 3 - ?)? 1
Beginning:
r f f o
f f f o
o o f f
f f f f
Move 1:
c r f o
f f f o
o o f f
f f f f
Move 2:
c c r o
f f f o
o o f f
f f f f
Move 3:
c c c o
f f r o
o o f f
f f f f 
Move 4:
c c c o
f r c o
o o f f
f f f f
Move 5:
c c c o
r c c o
o o f f
f f f f
Move 6:
c c c o
c r c o
o o f f
f f f f
Move 7:
c c c o
c c r o
o o f f
f f f f
Move 8:
c c c o
c c c o
o o r f
f f f f
Move 9:
c c c o
c c c o
o o c r
f f f f
Move 10:
c c c o
c c c o
o o c c
f f f r 
Move 11:
c c c o
c c c o
o o c c
f f r c
Move 12:
c c c o
c c c o
o o c c
f r c c
Move 13:
c c c o
c c c o
o o c c
r c c c
Entire floor visited and cleaned in 13 moves!!! 

Computer Engineering, Engineering

  • Category:- Computer Engineering
  • Reference No.:- M91296360

Have any Question?


Related Questions in Computer Engineering

Does bmw have a guided missile corporate culture and

Does BMW have a guided missile corporate culture, and incubator corporate culture, a family corporate culture, or an Eiffel tower corporate culture?

Rebecca borrows 10000 at 18 compounded annually she pays

Rebecca borrows $10,000 at 18% compounded annually. She pays off the loan over a 5-year period with annual payments, starting at year 1. Each successive payment is $700 greater than the previous payment. (a) How much was ...

Jeff decides to start saving some money from this upcoming

Jeff decides to start saving some money from this upcoming month onwards. He decides to save only $500 at first, but each month he will increase the amount invested by $100. He will do it for 60 months (including the fir ...

Suppose you make 30 annual investments in a fund that pays

Suppose you make 30 annual investments in a fund that pays 6% compounded annually. If your first deposit is $7,500 and each successive deposit is 6% greater than the preceding deposit, how much will be in the fund immedi ...

Question -under what circumstances is it ethical if ever to

Question :- Under what circumstances is it ethical, if ever, to use consumer information in marketing research? Explain why you consider it ethical or unethical.

What are the differences between four types of economics

What are the differences between four types of economics evaluations and their differences with other two (budget impact analysis (BIA) and cost of illness (COI) studies)?

What type of economic system does norway have explain some

What type of economic system does Norway have? Explain some of the benefits of this system to the country and some of the drawbacks,

Among the who imf and wto which of these governmental

Among the WHO, IMF, and WTO, which of these governmental institutions do you feel has most profoundly shaped healthcare outcomes in low-income countries and why? Please support your reasons with examples and research/doc ...

A real estate developer will build two different types of

A real estate developer will build two different types of apartments in a residential area: one- bedroom apartments and two-bedroom apartments. In addition, the developer will build either a swimming pool or a tennis cou ...

Question what some of the reasons that evolutionary models

Question : What some of the reasons that evolutionary models are considered by many to be the best approach to software development. The response must be typed, single spaced, must be in times new roman font (size 12) an ...

  • 4,153,160 Questions Asked
  • 13,132 Experts
  • 2,558,936 Questions Answered

Ask Experts for help!!

Looking for Assignment Help?

Start excelling in your Courses, Get help with Assignment

Write us your full requirement for evaluation and you will receive response within 20 minutes turnaround time.

Ask Now Help with Problems, Get a Best Answer

Why might a bank avoid the use of interest rate swaps even

Why might a bank avoid the use of interest rate swaps, even when the institution is exposed to significant interest rate

Describe the difference between zero coupon bonds and

Describe the difference between zero coupon bonds and coupon bonds. Under what conditions will a coupon bond sell at a p

Compute the present value of an annuity of 880 per year

Compute the present value of an annuity of $ 880 per year for 16 years, given a discount rate of 6 percent per annum. As

Compute the present value of an 1150 payment made in ten

Compute the present value of an $1,150 payment made in ten years when the discount rate is 12 percent. (Do not round int

Compute the present value of an annuity of 699 per year

Compute the present value of an annuity of $ 699 per year for 19 years, given a discount rate of 6 percent per annum. As