I never had something like that, but I assume the idea is the user can enter roman numerals or arabic numerals and operators and you compute the result and display in roman and/or arabic numerals?
Roman numeral parsing could be a bit tricky because you can't treat each symbol independently. I've never tried, but i think i'd start from the end of the string rather than the beginning, and find "tokens". For example, you see an I as the last character in the string. You know there is a token, because there is no symbol of lower value, so you "eat" that symbol, and add 1 to your sum. Once you hit a non I value, you have to check the symbol to its left. If that symbol is smaller and a valid "modifier" (i.e. I can modify V or X, X can modify L or C) then you take those two symbols as a token, and get the value of that token (XC = C - X = 90). Continue until you reach the beginning of the string.
That explanation omitted error checking, but that should be trivial. You'd just need a little state machine that counts symbols and determines any valid symbols. I.e. i've seen 2 Is, so I can accept any symbol. I've seen 3 Is, so I can accept anything that is not an I, etc.
Once you have that subroutine done, the rest isn't so bad. What i'm not sure of is the notation one might use for operators. If you use RPN it's pretty easy, but if they're scattered in the middle you just have to have strict rules about where operators can appear. Also, it would be best if X of any case was a roman numeral and not the multiplication operator to avoid confusion.
As for generating roman numerals for the result, That shouldn't be too bad. You can probably work from left to right generating this. You'd just need a long if-then-else block testing your value, which you will subtract from. While this is > 0, continue looping and in the if-then-else, have each case... for example > 1000, > 900, > 500, > 400, > 100, etc. It will fall in to one of them and you can append the proper roman numeral sequence to the result string, and subtract its value from the running total.
I'm not going to write any code, but the code normally isn't the hard part. Don't feel bad about being a slow coder, just try to be a fast problem solver. If you know how to solve it, the coding isn't so bad.
I'm not sure how this ties in to pass-by-reference. I could see it going either way.
Good luck. Definitely post questions. Like I said, no one will do your HW for you, but we're glad to help with particular sticky places in the implementation.
As an aside, this is the kind of place we go in the "real world" when we have problems. I'd probably be in comp.programming.* instead of macrumors forums, but it's the same idea.
-Lee
p.s.
I must have missed part of a post way up there that i just caught. If you have your functions working for the most part, but they aren't playing nice together I would highly recommend digging in with a debugger. No idea what language you are using, but if it's something gcc can compile, throw in the -g option when compiling, and fire up gdb, set a bunch of breakpoints, and see what happens.