Trying to write this program in C++, if you read the attachments, I am just starting to learn about loops (for, while, etc.) and if/else statements. I’d really appreciate if someone can show me a program for this in C++ that is not too far above my understanding of C++. The instructions don’t seem clear to what I really need, rather than prompting the user to input numbers to run the program, the software I am running on to grade this program does it. So there isn’t any need for “cout<<“Enter your Integer: ” ” etc…
INSTRUCTIONS
Show transcribed image text
I am looking for a program I can use to relate back to and to compare to mine and to figure out the problems I am encountering. This is my 3rd time asking for help as the last two responses programs gave outputs that ran for an infinite loop and were wrong, but I am unsure how to fix them.
EVERYONES CODE SO FAR HAS RAN FOR AN INFINITE LOOP REPEATING THE OUTPUTS NOT ENDING PLEASE KEEP THIS IN MIND
The aim of this assignment is practice the use of while loops and conditionals statements. You are going to write a program that prompts the user for an integer and then determines the additive persistence and corresponding additive root. You will continue prompting the user for an integer until they enter a negative number which indicates they are finished
Expert Answer
#include<iostream>
using namespace std;
int main()
{
long int n,temp; //declaring necessary variables
long int addroot,newsum;
while(true) //looping indefinitely
{
cin>>n; //reading the input
long int addPersistence=0; //declaring and initializing addPersistence as 0
if(n<0) //If the given number is less than 0, printing Error and exiting the program
{
cout<<“Error”<<endl;
break;
}
else if(n>=0 && n<=9) //If it is a single digit , then printing 0 and that number
cout<<0<<” “<<n<<endl;
else
{
newsum=0; //IN every stage, after adding the digits, we get a newsum.Hence using newsum variable and intitalzing it to 0.
temp=n; //Original ‘n’ is assigned to temp.
while(true) //looping indefinitely
{
addPersistence++; //incrementing the addPersistence by 1, since we are adding its digits in this iteration
while(temp>0) //while temp is > 0 loop executes or else it doesn’t
{
newsum=newsum+temp%10; //adding the digit to the newsum
temp/=10; //dividing temp by 10.
}
if(newsum<=9) //if the newsum(digits sum of temp) is less than 10, then it is the additive root,Hence breaking the loop.
{
addroot=newsum; //Assigning newsum to the variable addroot
break; //breaking the loop
}
else //if the newsum(digits sum of temp) is not less than 10
{
temp=newsum; //if the newsum(digits sum of temp) is not less than 10,then this should be given to temp
newsum=0; //newsum will be calculated for the new temp and hence it is assigned a value 0
}
}
cout<<addPersistence<<” “<<addroot<<endl; //printing the output
}
}
return 0;
}
Below is the screenshot for the program’s output.