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
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.