| | |
Loop Issues
![]() |
•
•
Join Date: Oct 2004
Posts: 9
Reputation:
Solved Threads: 0
I have a lab to create a loop to determine the positive divisors of an interger and then determine if the interger is a perfect,deficient, etc. I am having trouble determining how to write the statement to determine the divisors of the numbers. I believe the % operator is used. Just not sure. Help!!
Greetings,
Well, you're right on. Finding the divisor of a positive number can be easily found using the modulus operator, %. The modulus operator works on integers (and integer expressions) and yields the remainder when the first operand is divided by the second. In C++, the modulus operator is a percent sign, %. The syntax is exactly the same as for other operators:
The first operator, integer division, yields 2. The second operator yields 1. Thus, 7 divided by 3 is 2 with 1 left over.
The modulus operator turns out to be surprisingly useful. For example, you can check whether one number is divisible by another: if x % y is zero, then x is divisible by y.
Now lets use this same principal by finding the divisor of 12. We know 1, 2, 3, 4, 6, and 12 are divisible by twelve. Maybe this can help us figure out how to determine the divisors using a for loop.
This example is quite simple. You might ask yourself why we call the expression trialDivisor <= num / 2;. Well, I believe that is because 2 will always be a divisor of a positive number. It's usually dividend / divisor, and a divisor of 2 will never fail. Plus, we know that 24 is divisible into 24, though divisors only start at '/ 2' and down.
24 is divisbile by 12, 8, 6, etc...
36 is divisible by 18, 12, etc...
Hope this helps,
- Stack Overflow
Well, you're right on. Finding the divisor of a positive number can be easily found using the modulus operator, %. The modulus operator works on integers (and integer expressions) and yields the remainder when the first operand is divided by the second. In C++, the modulus operator is a percent sign, %. The syntax is exactly the same as for other operators:
int quotient = 7 / 3; int remainder = 7 % 3;
The modulus operator turns out to be surprisingly useful. For example, you can check whether one number is divisible by another: if x % y is zero, then x is divisible by y.
Now lets use this same principal by finding the divisor of 12. We know 1, 2, 3, 4, 6, and 12 are divisible by twelve. Maybe this can help us figure out how to determine the divisors using a for loop.
#include <stdio.h> int main() { int num = 12; printf("The divisors of 12 are "); for (trialDivisor = 1; trialDivisor <= num / 2; ++trialDivisor) if (num % trialDivisor == 0) { divisorSum += trialDivisor; // in other words: divisor_sum = divisor_sum + trial_divisor; printf("%d ", trialDivisor); } return 0; }
24 is divisbile by 12, 8, 6, etc...
36 is divisible by 18, 12, etc...
Hope this helps,
- Stack Overflow
Following the rules will ensure you get a prompt answer to your question. If posting code, please include BB [code][/code] tags. Your question may have been asked before, try the search facility.
IRC
Channel: irc.daniweb.com
Room: #c, #shell
IRC
Channel: irc.daniweb.com
Room: #c, #shell
•
•
Join Date: Oct 2004
Posts: 9
Reputation:
Solved Threads: 0
•
•
•
•
Originally Posted by Stack Overflow
Greetings,
Well, you're right on. Finding the divisor of a positive number can be easily found using the modulus operator, %. The modulus operator works on integers (and integer expressions) and yields the remainder when the first operand is divided by the second. In C++, the modulus operator is a percent sign, %. The syntax is exactly the same as for other operators:
The first operator, integer division, yields 2. The second operator yields 1. Thus, 7 divided by 3 is 2 with 1 left over.int quotient = 7 / 3; int remainder = 7 % 3;
The modulus operator turns out to be surprisingly useful. For example, you can check whether one number is divisible by another: if x % y is zero, then x is divisible by y.
Now lets use this same principal by finding the divisor of 12. We know 1, 2, 3, 4, 6, and 12 are divisible by twelve. Maybe this can help us figure out how to determine the divisors using a for loop.
This example is quite simple. You might ask yourself why we call the expression trialDivisor <= num / 2;. Well, I believe that is because 2 will always be a divisor of a positive number. It's usually dividend / divisor, and a divisor of 2 will never fail. Plus, we know that 24 is divisible into 24, though divisors only start at '/ 2' and down.#include <stdio.h> int main() { int num = 12; printf("The divisors of 12 are "); for (trialDivisor = 1; trialDivisor <= num / 2; ++trialDivisor) if (num % trialDivisor == 0) { divisorSum += trialDivisor; // in other words: divisor_sum = divisor_sum + trial_divisor; printf("%d ", trialDivisor); } return 0; }
24 is divisbile by 12, 8, 6, etc...
36 is divisible by 18, 12, etc...
Hope this helps,
- Stack Overflow
Thank You!!
•
•
Join Date: Oct 2004
Posts: 9
Reputation:
Solved Threads: 0
See my attachement below: I believe one one braces is in the wrong location. I am trying to loop a range of #20-30 and #490-500 and have each number printed and stating is the number is deficient,perfect or abundant. The ouput I am tryint to achieve should be in this format. I hope this is making sense.
Number Classification
20 deficient*(*I am guessing the outcome)
21 perfect
"" ""
500 abundant
#include <stdio.h>
#include <iostream>
using namespace std;
#include<iomanip>
int main() {
int num = 20,divisor,divisorSum,total=0,num2=490,count;
cout<<setw(2)<< "\n Number Classification \n";
cout <<"___________________________________" <<"\n" ;
while (num<=30,num2<=500)
{ cout<< num<<num2;
num++,num2++;
for (divisor = 1; divisor <= num / 2; ++divisor)
if (num % divisor == 0)
{
total=total+divisor;
}
if (total>num)
{ cout<< setw(4)<<"\t"<<num<< "\tAbundant \n";
cout<< setw(4)<<"\t"<<num2<< "\tAbundant \n" ;
}
else if (total<num)
{ cout<< setw(4)<<"\t"<<num<<"\tDeficient \n";
cout<< setw(4)<<"\t"<<num2<<"\tDeficient \n";
}
else if (total=num)
{ cout<< setw(4)<<"\t"<<num<<"\tPerfect \n";
cout<< setw(4)<<"\t"<<num2<<"\tPerfect \n";
}
}
system ("pause");
return 0;
}
Number Classification
20 deficient*(*I am guessing the outcome)
21 perfect
"" ""
500 abundant
#include <stdio.h>
#include <iostream>
using namespace std;
#include<iomanip>
int main() {
int num = 20,divisor,divisorSum,total=0,num2=490,count;
cout<<setw(2)<< "\n Number Classification \n";
cout <<"___________________________________" <<"\n" ;
while (num<=30,num2<=500)
{ cout<< num<<num2;
num++,num2++;
for (divisor = 1; divisor <= num / 2; ++divisor)
if (num % divisor == 0)
{
total=total+divisor;
}
if (total>num)
{ cout<< setw(4)<<"\t"<<num<< "\tAbundant \n";
cout<< setw(4)<<"\t"<<num2<< "\tAbundant \n" ;
}
else if (total<num)
{ cout<< setw(4)<<"\t"<<num<<"\tDeficient \n";
cout<< setw(4)<<"\t"<<num2<<"\tDeficient \n";
}
else if (total=num)
{ cout<< setw(4)<<"\t"<<num<<"\tPerfect \n";
cout<< setw(4)<<"\t"<<num2<<"\tPerfect \n";
}
}
system ("pause");
return 0;
}
![]() |
Similar Threads
- reading multiple text files (Java)
- Help with a loop (Visual Basic 4 / 5 / 6)
- Winsock and looping issues unsure how to resolve (Visual Basic 4 / 5 / 6)
- Counter issues (C)
Other Threads in the C Forum
- Previous Thread: pls... i need help!!!
- Next Thread: Array with names
| Thread Tools | Search this Thread |
* ansi api array arrays binarysearch calculate centimeter changingto char character convert copyanyfile copypdffile creafecopyofanytypeoffileinc createcopyoffile createprocess() csyntax directory dynamic execv fflush file floatingpointvalidation fork forloop frequency function getlasterror getlogicaldrivestrin givemetehcodez grade graphics gtkgcurlcompiling gtkwinlinux highest histogram homework i/o inches infiniteloop intmain() iso keyboard km linked linkedlist linux linuxsegmentationfault list logical_drives looping loopinsideloop. lowest match matrix microsoft mqqueue mysql oddnumber odf open opendocumentformat openwebfoundation pdf pointer posix power program programming pyramidusingturboccodes radix read recursion recv recvblocked repetition reversing scanf scheduling segmentationfault send shape single socketprogramming stack standard strchr string suggestions test threads unix urboc user variable whythiscodecausesegmentationfault win32api windows.h windowsapi






