Converting base 10 to Roman Numerals

  • Thread starter Thread starter C++ hates me
  • Start date Start date
  • Tags Tags
    Base
Click For Summary

Homework Help Overview

The discussion revolves around converting a base 10 number into Roman numerals using a C++ program. The original poster expresses a desire to understand the code provided by another user and seeks clarification on specific lines of the program.

Discussion Character

  • Exploratory, Conceptual clarification, Problem interpretation

Approaches and Questions Raised

  • The original poster attempts to understand the functionality of specific lines of code in the provided C++ program, particularly focusing on variable definitions and their roles in the conversion process.
  • Some participants suggest manually running through the program to better grasp how the variables are defined and utilized.
  • Questions are raised about the purpose of certain variables, such as the significance of setting the variable 'p' to 100 and its role in the conversion from base 10 to Roman numerals.

Discussion Status

The discussion is ongoing, with participants actively engaging in clarifying the code's functionality. Some guidance has been offered regarding the understanding of variable roles, but there is no explicit consensus on the interpretations yet.

Contextual Notes

The original poster emphasizes a desire to learn and not simply receive answers, indicating a focus on understanding the underlying concepts rather than completing the assignment directly.

C++ hates me
Messages
2
Reaction score
0
Hello Physics Forums,

Before i get started asking questions i wanted to clarify that i don't 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.

Homework Statement



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 count << "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 count << l[0];
10 for (int i=1; i<4; i++,p/=10)
11 {
12 for(; r >= p*d[0]; r -= p*d[0])
13 count << l[2*i] << l[i*2-2];
14 for(; r >= p*d[1]; r -= p*d[1])
15 count << l[2*i-1];
16 for(; r >= p*d[2]; r -= p*d[2])
17 count << l[2*i]<<l[i*2-1];
18 for(; r >= p; r -= p)
19 count << l[2*i];
}
count << "\n\nEnter the next number, or -1 to quit:\n";
cin >> r;
} while (r>=0);

count << "\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 don't want to turn it in and get a good grade because it isn't 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 anyone 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:
Physics news on Phys.org
Run through the above program manually - on paper. Every time a variable is defined, write it down and put its value in.
 
Last edited:
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 don't really understand and i take it, its pretty important.
 
C++ hates me said:
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 don't really understand and i take it, its pretty important.
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.
 

Similar threads

  • · Replies 12 ·
Replies
12
Views
2K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 17 ·
Replies
17
Views
2K
Replies
4
Views
2K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 11 ·
Replies
11
Views
3K
Replies
2
Views
1K
  • · Replies 3 ·
Replies
3
Views
2K