Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 1 year ago.
Improve this question
Sensor_Fusion ranges from 3 to -3, the motor output is correct between 3 to -1, showing 1, -1 for Motor A and B respectively and then switching to the second elseif statement however when sensor fusion goes below -1 MotorA shows 1 instead of -1 and MotorB shows 0.996024 instead of 1. Does anyone know what the problem is?
if (Sensor_Fusion >= 1) {
MotorA = 1;
}
else if (-1 < Sensor_Fusion && Sensor_Fusion < 1) {
MotorA = Sensor_Fusion;
}
else {
MotorA = -1;
}
if (Sensor_Fusion >= 1) {
MotorB = -1;
}
else if (1 > Sensor_Fusion && Sensor_Fusion > -1) {
MotorB = 0 - Sensor_Fusion;
}
else {
MotorA = 1;
}
Your last line has the error, it should be MotorB = 1; not MotorA = 1;.
Related
Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 5 years ago.
Improve this question
Could you guys please walk and help me with this practice question?
I'm unable to figure out how the answer is 5.
int arr[12] = { 1,3,5,0,7,2,0,4,4,0,8,8 };
int count = 0;
for (int i = 0; i<11; i++) {
if (arr[i] = arr[i + 1])
count++;
else
count--;
}
cout << count << endl;
In your example you have :
if (arr[i] = arr[i + 1])
which is the =, not ==. It is assigning not checking for equality. So in the example:
if (a = 3) {
You will assign a to 3 and check if 3 is true, which it is. This leads to an easy look at why the answer is 5:
arr=> { 1,3,5,0,7,2,0,4,4,0,8,8 };
count=> 1,2,1,2,3,2,3,4,3,4,5
And if you are interested, look at the array after you have completed. It will look like this:
{3,5,0,7,2,0,4,4,0,8,8,8} // Everything has been moved down 1 (except for the final member)
See a live example of this here.
Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 5 years ago.
Improve this question
I keep getting this error "Control may reach end of non-void function". Can anyone help me get through? I am stuck here. Thank you.
bool Vector_double::erase(int ind1, int ind2){
if(ind1 >= count || ind2 >= count || ind1 >= ind2){
if(ind1 == ind2){
erase(ind1);
return true;
}
return false;
}
else{
double *narr = new double[count - ind2 - 1];
for(int i = ind2 + 1; i < count; ++i){
narr[i - ind2 - 1] = arr[i];
}
for(int i = ind1; i < ind1 + count - ind2 - 1;++i){
arr[i] = narr[i - ind1];
}
count = count - (ind2 - ind1) - 1;
}
}
Your function promises to return something (bool). However, the code contains paths that don't return anything. In order to fix this bug, start by documenting (in plain English) what the returned value is supposed to express. Then, adjust your code.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Closed 6 years ago.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Improve this question
Trying to write a function that sees if the number in the array is increasing or decreasing compared to the previous.
Getting an infinite loop.
for(int col=0; col < 5; col++) {
newArray[col][0] = printthis[col][0];
for(int row = 2; row < 5; row++) {
cout << col << "\t" << row << "\n";
if(stoi(printthis[col][row]) > stoi(printthis[col][--row])) {
newArray[col][row] = "Up";
}
else {
newArray[col][row] = "Down";
} //if else
}//inner loop
}
Here the loop index is decreased, so it will always stay at value 2, note the --row:
if(stoi(printthis[col][row]) > stoi(printthis[col][--row])){
You probably want:
if(stoi(printthis[col][row]) > stoi(printthis[col][row-1])){
Also the loop should probably start at row = 1 instead of 2, to compare to the first row instead of second.
Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 8 years ago.
Improve this question
Here's the very basic code. The loop will start, even if the condition is false, and it won't end.
int oldpick = 6;
int pick = rand() % 5;
while (pick = oldpick){
pick = rand() % 5;
}
pick = oldpick
This assignes the value of oldpick to pick, and then enters the loop. I think you wanted ==
while (pick == oldpick){
Also, this line:
pick = rand() % 5;
will not give a number higher than 4, so the condition could never be realised, even with ==
All of this could have been seen if warnings had been activated when compiling.
You have a simple typographical error in your while loop condition...
while (pick = oldpick) should be while (pick == oldpick) for equals or while (pick != oldpick) for not equals.
Plus, pick will never ever equal 6 as 6 % 5 == 5
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
What is the difference between this:
s = 0;
if (x > 0) s++;
if (y > 0) s++;
and this:
s = 0;
if (x > 0) s++;
else if (y > 0) s++;
Any help would be greatly appreciated.
When you write else if instead of if, program will not check the else if statement if x > 0, but when you write two if statements program will check both conditions, no matter if x > 0 or not.
In the first case the both conditions are checked because there are two different if statements.
In the second case the second condition is checked only if the first condition is evaluated to false.
Say x is 10 and y is 10. At the end of the first set of statements, s will be equal to 2. At the end of the second set of statements, s will be equal to 1.
The second example
s = 0;
if (x > 0) s++;
else if (y > 0) s++;`
will check for the y value only if x > 0 is false. The first example will execute the check regardless of x's value.