need some help, I'm confused

I'm trying to figure out a code that will change numbers to romans: for example, the user enter a number a at it will display "your number is I. This to be done from 1 to 10. This is what I got, but there's a problem , whem It runs it always displays all the roman numbers:

#include

void main()
{
char letters [5][10] = {"I""V""X"};
int num;

cout<< "Enter number from 1 to 10: "<<"
";

cin>> num;

cout<<"your roman number is:"<<"
";

if (num = '1') cout <<letters [0][0] << endl;
if (num = '2') cout <<letters [0][0] << letters [0][0]<<endl;
if (num = '3') cout <<letters [0][0] << letters [0][0]<< letters [0][0]<<endl;

if (num = '4') cout <<letters [0][0] << letters [0][1]<<endl;
if (num = '5') cout <<letters [0][1] <<endl;
if (num = '6') cout <<letters [0][1] << letters [0][0]<<endl;
if (num = '7') cout <<letters [0][1] << letters [0][0]<<letters [0][0]<<endl;
if (num = '8') cout <<letters [0][1] << letters [0][0]<< letters [0][0]<<letters [0][0]<<endl;
if (num = '9') cout <<letters [0][0] << letters [0][2]<<endl;
if (num = '10') cout <<letters [0][2] <<endl;

}

Comments

  • : I'm trying to figure out a code that will change numbers to romans: for example, the user enter a number a at it will display "your number is I. This to be done from 1 to 10. This is what I got, but there's a problem , whem It runs it always displays all the roman numbers:
    :
    : #include
    :
    : void main()
    : {
    : char letters [5][10] = {"I""V""X"};
    : int num;
    :
    : cout<< "Enter number from 1 to 10: "<<"
    ";
    :
    : cin>> num;
    :
    : cout<<"your roman number is:"<<"
    ";
    :
    : if (num = '1') cout <<letters [0][0] << endl;
    : if (num = '2') cout <<letters [0][0] << letters [0][0]<<endl;
    : if (num = '3') cout <<letters [0][0] << letters [0][0]<< letters [0][0]<<endl;
    :
    : if (num = '4') cout <<letters [0][0] << letters [0][1]<<endl;
    : if (num = '5') cout <<letters [0][1] <<endl;
    : if (num = '6') cout <<letters [0][1] << letters [0][0]<<endl;
    : if (num = '7') cout <<letters [0][1] << letters [0][0]<<letters [0][0]<<endl;
    : if (num = '8') cout <<letters [0][1] << letters [0][0]<< letters [0][0]<<letters [0][0]<<endl;
    : if (num = '9') cout <<letters [0][0] << letters [0][2]<<endl;
    : if (num = '10') cout <<letters [0][2] <<endl;
    :
    : }
    :
    This is the classic C equality error. The primary problem is in your tests for equality (if (num = '4')....). When you use the single equal sign (=) you do an assignment operation. If the assignment succeeds, it returns 1 which is equivalent to true, so the test passes and the body of the statement is executed. What you want to do is use the double equal sign (==) to do a test for equivalence. An easy way to avoid this problem in the future is to put the constant value on the left side of the equation ('1' == num). That way if you leave the second equal sign out, the compiler will complain (since it cannot assign the value of a variable to a constant).

    Another thing - you are inputting num as an int, but testing it's value against a char ('1') - the tests will never pass. Remove the "'"s from the tests also.

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

In this Discussion