Desperately need help for project

Pages: 123
Yes, it would work.

For the function : yes, you have to use pointers. You can also use references instead of pointers, they may be easier to use.
You can find an example of a function using references in this post: http://cplusplus.com/forum/beginner/85841/#msg464917
regarding the code

1
2
3
4
5
6
7
while( ss >> Action >> value )
    {
        if( string("REPEAT") == Action )
        {
            cout << "\nNew row : (REPEAT," << value << ") ";
            nRepeats.push_back(value);
            CommandList.push_back( std::string () );


the instruction is this
REPEAT 36 [ RIGHT 10 REPEAT 360 [ FORWARD .04 RIGHT 1 ] ]

without brackets its
REPEAT 36 RIGHT 10 REPEAT 360 FORWARD .04 RIGHT 1

so it only detects REPEAT 36 and exits the loop.

also if i change it to

REPEAT 36[RIGHT 10 REPEAT 360[FORWARD .04 RIGHT 1 ]]

becomes without bracket

REPEAT 36 RIGHT 10 REPEAT 360 FORWARD .04 RIGHT 1

and when i loop through the code and it comes to RIGHT
when it prints it displays

(REPEAT,36) ([RIGHT,10)

how did that square bracket get there.

Last edited on
That could be because you didn't remove the brackets.
i did i used this

replace(cmd.begin(), cmd.end(), '[', ' ');
replace(cmd.begin(), cmd.end(), ']', ' ');

before the while loop
I thought you said the obtaining a vector within a vector would work but it doesn't

1
2
3
4
5
6
7
8
9
10
11
for(unsigned i=0;i<Cmdlist.size();i++)
        {
            command = Cmdlist[i];
            for (k=0; k<command.size(); k++)
            {
                comd = command[k];
                comd.Comnd = act;
                comd.Num = val;
                cout<<"The instructions are:"<<act<<"performed"<<val<<"times"<<endl;
            }
        }


error i get is regarding the comd=command[k] which is

no match for operator= in command = cmdlist.std::vector<tp, _Alloc>::operat...
i am trying to send amount value to a class and have done the following:

global variable

vector<string> actvec;
vector<float> amountvec;

class Commands
{
public:
Commands();
virtual ~Commands();
virtual void performaction(){};

protected:
float amount;
};

class Forward : public Commands
{
public:
void performaction()
{
actvec.push_back("FORWARD");
amountvec.push_back(amount);
}
};

same with other commands, as that is what is required from me, to set a class for each one that inherits from the main base class.

void performcommand(string commandstr, float amnt)
{
if(commandstr=="LEFT")
{
Left.amount=amnt;
Left.performaction();
}
else if(commandstr=="RIGHT")
{
Right.amount=(-amnt);
Right.performaction();
}
else if(commandstr=="FORWARD")
{
Forward.amount=amnt;
Forward.performaction());
}
else if(commandstr=="JUMP")
{
Jump.amount=amnt;
Jump.performaction();
}
else cout<<"The Command was not identifiable"<<endl;
}

but for each line it says expected unqualified-id before '.' token

i don't understand
Last edited on
Ok so i got rid of that error somehow i don't know
now i am debugging

when i run this code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
string comd,action;
    float value;
    stringstream as(comd);


	for(unsigned i=0;i<repeat[index];i++)
	{
		comd=current[index];
		cout<<comd<<endl;
		as<<comd;
		while( as >> action >> value )
        {
            as.clear();
            cout<<"Performing Action:"<<action<<endl;
            cout<<"Amount:"<<value<<endl;
            performcommand(action,value);
        }
		if((index+1)<repeat.size());
		{
			repeatcmd(index+1, current, repeat);

		}
	}


this prints out

Performing Action:Forward
Amount: 0.04

Performing Action: Right
Amount:1

FORWARD 0.04 RIGHT 1
FORWARD 0.04 RIGHT 1

it print 360 of it.
would you mind looking at my complete code and tell me where i am going wrong as there might be mistakes in other areas.

regards
ok i am making some progress

my program draws commands that don't contain repeat commands but the ones contain repeat commands it causes a segmentation fault.
THe main error i am getting is during the following code

while( as >> action >> value )
{
as << action << ' ' << value << ' ';

tempcomd.push_back(as.str());
cout<<action<<","<<value<<endl;
}

it just goes through this forever

forward 0.04
right 1
forward 0.04
right 1
and so on.
Last edited on
i have solved that as well

i placed it in a loop it would work outside and eureka it works

the project is finally finished and all works well
thanks for the help
You're welcome.
just one more thing
since i am moving over to linux to test this on.
i have added error code if it can't find file, which when i run i get that error,

linux doesn't have c:\ it does it straight from root so when i place

ifstream myfile ("\\home\\C++Project\\command.txt") it still says can't find file.

how can i write it so i just do istream myfile("command.txt");
because even when i write that it says file not found on current directory
my error message

thanks
It works now, i just
added chdir to the project directory and then it would find it
strange, wonder directory it was previously looking at in linux.
Topic archived. No new replies allowed.
Pages: 123