Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Hi, I have a question from my C++ program. I need to expect the input to be from

ID: 3890043 • Letter: H

Question

Hi, I have a question from my C++ program. I need to expect the input to be from 1 to 6 digits in length (inclusive). What does mean? and how can I fix it because it does not work in my code. Thanks below is my code.

#include <iostream>

#include <cstdlib>

#include <iostream>

using std::cout;

using std::cin;

using std::endl;

//function templates

int reverseNum(int);

int main()

{

//variables

char buf[100];

int num, num1, len = 0, temp, len1 = 0, ret;

while (true)

{

//prompt user for input

cout << "Enter the number to performreverse (q or Q to quit): ";

cin >> buf;

num = num1 = atoi(buf);

while (num1 > 0) //find the length of the number

{
num1 = num1 / 10;
len++;
}

//quit program if user entered a q

if (buf[0] == 'q' || buf[0] == 'Q')
break;

//==================how can I fix it ??===========================

if (!(len > 1 && len <= 6))
continue;

//==============================================

cout << "Entered number: " << num << endl;

ret = reverseNum(num); //ret gets the return type from reverseNum function

temp = ret;

while (temp > 0) //find the length of the reversed number

{

temp = temp / 10;

len1++;

}

cout << "Reversed number With leading zeros : ";

for (int i = 0; i < (len - len1); i++)

cout << 0;

cout << ret << endl;

cout << "Reversed number: " << ret << endl;

}

}

int reverseNum(int number)

{

int reversedNum = 0;

int reminder;

int zeros = 0;

bool firsttime = true;

while (number > 0)

{

reminder = number % 10;

//If reminder is 0 and the first non zero number is not yet encountered

if (reminder == 0 && firsttime)

{

zeros++;

}

//If first non zero digit is encounrered, zeros encountered later should'nt be counted

else

{

firsttime = false;

}

reversedNum = reversedNum * 10 + reminder;

number /= 10;

}

return reversedNum;

}

CAUsershnightOneDrive Documents Visual Studio 2015Projects ReverseDebug1Reverse.exe Enter the number to performreverse (q or Q to quit): 1234567 Entered number: 1234567 Reversed number With leading zeros : 7654321 Reversed number 7654321 Enter the number to performreverse (q or Q to quit):

Explanation / Answer

Given below is the fixed code. But if you are allowed to use #include <cstring> you can use strlen(buf) to calculate length of string.

Hope the answer helps. If it did help, please rate the answer. Thank you.

#include <iostream>
#include <cstdlib>
#include <iostream>

using std::cout;
using std::cin;
using std::endl;
//function templates
int reverseNum(int);
int main()
{
//variables
char buf[100];
int num, num1, len = 0, temp, len1 = 0, ret;
while (true)
{
//prompt user for input
cout << "Enter the number to perform reverse (q or Q to quit): ";
cin >> buf;
  
  
//calculate length
len = 0;
while(buf[len] != '')
len++;
  
  
if (len < 1 || len > 6) //if length is < 1 or more than 6, ask input again
{
cout << "Length of input should be 1 to 6 digits" << endl;
continue;
}
//quit program if user entered a q
if (buf[0] == 'q' || buf[0] == 'Q')
break;
  
num = atoi(buf);
//==============================================
cout << "Entered number: " << num << endl;
ret = reverseNum(num); //ret gets the return type from reverseNum function
temp = ret;
len1 = 0;
while (temp > 0) //find the length of the reversed number
{
temp = temp / 10;
len1++;
}
cout << "Reversed number With leading zeros : ";
for (int i = 0; i < (len - len1); i++)
cout << 0;
cout << ret << endl;
cout << "Reversed number: " << ret << endl;
}
}
int reverseNum(int number)
{
int reversedNum = 0;
int reminder;
int zeros = 0;
bool firsttime = true;
while (number > 0)
{
reminder = number % 10;
//If reminder is 0 and the first non zero number is not yet encountered
if (reminder == 0 && firsttime)
{
zeros++;
}
//If first non zero digit is encounrered, zeros encountered later should'nt be counted
else
{
firsttime = false;
}
reversedNum = reversedNum * 10 + reminder;
number /= 10;
}
return reversedNum;
}

output

Enter the number to perform reverse (q or Q to quit): 123
Entered number: 123
Reversed number With leading zeros : 321
Reversed number: 321
Enter the number to perform reverse (q or Q to quit): 125000
Entered number: 125000
Reversed number With leading zeros : 000521
Reversed number: 521
Enter the number to perform reverse (q or Q to quit): 120
Entered number: 120
Reversed number With leading zeros : 021
Reversed number: 21
Enter the number to perform reverse (q or Q to quit): 100
Entered number: 100
Reversed number With leading zeros : 001
Reversed number: 1
Enter the number to perform reverse (q or Q to quit): 1234567
Length of input should be 1 to 6 digits
Enter the number to perform reverse (q or Q to quit): q

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote