1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Homework Help: Converting base 10 to Roman Numerals

  1. Apr 15, 2010 #1
    Hello Physics Forums,

    Before i get started asking questions i wanted to clarify that i dont need/want a answer, i have an answer after about an hour of searching.

    The thing is i understand what needs to be done but i do not understand how to do it in C++.
    I am just hoping to learn from you guys.


    1. The problem statement, all variables and given/known data

    The problem is: I must write a program in C++ that converts a 4 digit arabic number into roman numerals. I must have a loop that allows the user to repeat the calc. however many times they wish ( I already know how.)

    The answer that i found was this:

    #include <stdafx.h>
    #include <iostream>
    using namespace std;
    int main()
    {
    1 char l[] = "MDCLXVI";
    2 int r,d[]={9,5,4,1};

    3 cout << "Enter a positive integer to convert to Roman numerals:\n";
    4 cin >> r;

    5 do
    6 {
    7 int p=100;
    8 for(; r>=1000; r-=1000)
    9 cout << l[0];
    10 for (int i=1; i<4; i++,p/=10)
    11 {
    12 for(; r >= p*d[0]; r -= p*d[0])
    13 cout << l[2*i] << l[i*2-2];
    14 for(; r >= p*d[1]; r -= p*d[1])
    15 cout << l[2*i-1];
    16 for(; r >= p*d[2]; r -= p*d[2])
    17 cout << l[2*i]<<l[i*2-1];
    18 for(; r >= p; r -= p)
    19 cout << l[2*i];
    }
    cout << "\n\nEnter the next number, or -1 to quit:\n";
    cin >> r;
    } while (r>=0);

    cout << "\n\nHave a nice day.";

    return 0;
    }

    **I give all credit to the user gnome for the above program, i merely copied it :(**

    The problem is i dont want to turn it in and get a good grade because it isnt my work.
    I really want to be able to do it on my own, i just do not understand C++ well enough to write this program.
    Can any one explain to me in ordinary terms what the following lines of code are doing:
    1, 2, 7, 8, 10, 12-19 :)

    Thank you all for your guidance and patience.
    Sean

    [edit] I see now that i posted in introductory physics, if an admin could move it to computer sci, engineering boards i would appreciate it!
     
    Last edited: Apr 15, 2010
  2. jcsd
  3. Apr 15, 2010 #2

    DaveC426913

    User Avatar
    Gold Member

    Run through the above program manually - on paper. Every time a variable is defined, write it down and put its value in.
     
    Last edited: Apr 15, 2010
  4. Apr 16, 2010 #3
    Ok i will do that. In line 7 when he sets the int p value = to 100 why does he do it? Does it help convert from base 10 to roman numerals?
    Line 10 is the one i dont really understand and i take it, its pretty important.
     
  5. Apr 16, 2010 #4

    DaveC426913

    User Avatar
    Gold Member

    It is a counter for digit placeholders. It starts off at 100, then in line 10, where the i loop increments, it is divided by 10. So:
    when i=1, p=100
    when i=2, p=10
    when i=3, p=1
    when i=4, the loop exits

    Presumably, it is going through the 100's column, then the 10's column, then the 1's column.
     
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook