Hello all,

Thank you ahead of time if anyone answers this.
I am new to c++ and am having some difficulty understanding my assignment.
I wrote some code that does what the teacher has requested but according to her it does not utilize a function. I know that I have to call a function and that the function should not have to have user input to work but I don't really know how to modify my existing code to implement a function.
(I thought I was, as the program does what it is supposed to do, just not the way she wants it to be done.) PLEASE HELP!! HERE IS THE CODE I HAVE

#include <iostream>

using std::cout;
using std::cin;
using std::endl;


int reverse(); //function prototype for number reversal

int main() //begins program execution
{ int a; //number reversed
a = reverse();
cout << "The reversed number is " << a << endl; //final output


return 0; //end program
}

int reverse() //function
{
int x, y, z = 0; //initialize parameters

cout << "Enter an integer to be reversed: "; //initial number
cin >> x; //input number
while (x > 0){ //while conditions
y = x%10;
x = x/10;
z = 10 * z + y;
}
return z; //return value
} //end reverse function

Dani AI

Generated

— the core issue is separation of concerns: the reversing routine should do only the math and get its input from a parameter, while any prompting/cin stays in main. Both and pointed this out; the next step is to change the prototype to accept an int and remove any I/O from the function.

A concise, safe implementation that avoids duplicating the digit-loop examples already shown uses string reversal and handles negative inputs and overflow checks:

#include <string>
#include <algorithm>
#include <limits>

int reverseNumber(int n) {
    long long t = n;
    bool neg = t < 0;
    if (neg) t = -t;
    std::string s = std::to_string(t);
    std::reverse(s.begin(), s.end());
    unsigned long long rev = 0;
    for (char c : s) rev = rev * 10 + (c - '0');
    if (rev > static_cast<unsigned long long>(std::numeric_limits<int>::max())) {
        return 0; // overflow policy: adjust as required (throw, return sentinel, use long long)
    }
    int result = static_cast<int>(rev);
    return neg ? -result : result;
}

Implementation notes: keep cin/cout in main, read into an int, then call reverseNumber(value) and print the returned value. Test with edge cases: 0 => 0, numbers ending with zeros (e.g., 120 => 21), negative numbers (-123 => -321), and large values that may overflow when reversed. If the assignment expects support for larger ranges, change the return type to long long and adjust the overflow policy.

This approach satisfies the teacher’s constraint (no UI inside the function), preserves a single responsibility for the function, and makes unit testing straightforward.

Recommended Answers

All 3 Replies

Hello all,

Thank you ahead of time if anyone answers this.
I am new to c++ and am having some difficulty understanding my assignment.
I wrote some code that does what the teacher has requested but according to her it does not utilize a function. I know that I have to call a function and that the function should not have to have user input to work but I don't really know how to modify my existing code to implement a function.
(I thought I was, as the program does what it is supposed to do, just not the way she wants it to be done.) PLEASE HELP!! HERE IS THE CODE I HAVE

It's a little unclear from your post exactly what you want to do -
If I understand you correctly, your teacher is asking for a function which will take the input as an argument, rather than from the user, something like this..

int reverse(int input)
{
    // reversing algorithm here
}

this is the email I recieved from her:

the function should get its input from the parameter list, not directly from the user. For most functions, there shouldn’t be anything that deals with computer’s user interface such as keyboard or monitor. Please change this program and resend. Thanks.

Thank you for your help oh coded ones...

this is the email I recieved from her:

the function should get its input from the parameter list, not directly from the user. For most functions, there shouldn’t be anything that deals with computer’s user interface such as keyboard or monitor. Please change this program and resend. Thanks.

Thank you for your help oh coded ones...

This was just explained to you in the other post. Take a look at this example:

int reverse(int num) {
    int reverse = 0;
    
    while (num > 0) {
        reverse *= 10;
        reverse += num % 10;
        num /= 10;
    }
    return reverse;
}

Your method shouldn't prompt the user, but rather return the reverse of a number.

Hope this helps.

PS. I don't mind if you use that algorithm, but I'm sure your teacher will. Try to fix up your algorithm (they're pratically the same anyway).

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.