C++ 无法从非常简单的函数中获得正确答案
好吧,我是个十足的傻瓜。我正在尝试项目Euler,以更好地在C++。我在做问题1,但没有得到正确的输出。当我运行它时,我得到numTotalTree是-3,numTotalFive是-5,numTotal是0。我的函数有点问题,但我不确定我做错了什么。我该如何解决这个问题C++ 无法从非常简单的函数中获得正确答案,c++,C++,好吧,我是个十足的傻瓜。我正在尝试项目Euler,以更好地在C++。我在做问题1,但没有得到正确的输出。当我运行它时,我得到numTotalTree是-3,numTotalFive是-5,numTotal是0。我的函数有点问题,但我不确定我做错了什么。我该如何解决这个问题 #include <iostream> using namespace std; int main() { int amount = 1000; int numOfThree = amount /
#include <iostream>
using namespace std;
int main()
{
int amount = 1000;
int numOfThree = amount / 3;
int numOfFive = amount / 5;
int numTotalThree = 0;
int numTotalFive = 0;
int numTotal = numTotalThree + numTotalFive;
cout << numOfThree << endl;
cout << numOfFive << endl;
for(int i = 0; i <= numOfThree; i++)
{
numTotalThree += numTotalThree + 3;
}
cout << numTotalThree << endl;
for(int i = 0; i <= numOfFive; i++)
{
numTotalFive += numTotalFive + 5;
}
cout << numTotalFive << endl;
cout << numTotal << endl;
system("PAUSE");
return 0;
}
#包括
使用名称空间std;
int main()
{
整数金额=1000;
int numOfThree=金额/3;
int numofeive=金额/5;
int numTotalThree=0;
int numTotalFive=0;
int numTotal=numtotaltree+numTotalFive;
coutC++不是一种函数式语言,它是过程性的——这意味着你必须按顺序做事。当你这样做时:
int numTotalFive = 0;
int numTotal = numTotalThree + numTotalFive;
更新NumtotalTree和numTotalFive时,它将立即执行,不再执行。如果您不再触摸它,则将输出该值。C++不是函数式语言,它是程序性的,这意味着您必须按顺序执行操作。执行此操作时:
int numTotalFive = 0;
int numTotal = numTotalThree + numTotalFive;
更新NumtotalTree和numTotalFive时,它将立即执行,不再执行。如果您不再触摸它,则将输出该值。C++不是函数式语言,它是程序性的,这意味着您必须按顺序执行操作。执行此操作时:
int numTotalFive = 0;
int numTotal = numTotalThree + numTotalFive;
更新NumtotalTree和numTotalFive时,它将立即执行,不再执行。如果您不再触摸它,则将输出该值。C++不是函数式语言,它是程序性的,这意味着您必须按顺序执行操作。执行此操作时:
int numTotalFive = 0;
int numTotal = numTotalThree + numTotalFive;
更新NumtotalTree和numTotalFive时,它会立即执行,不会再次执行。如果您不再触摸它,将输出该值。下面是一个想法:
通过检查余数%==0来检查有多少个数可以被三整除。对五个数做同样的操作,然后对两个数都做同样的操作。从前两个数的总和中减去可以被二者整除的数,以得到准确的答案
int divisibleByThree=0;
int divisibleByFive=0;
int divisibleByBoth=0;
int total;
for(int i=0; i<1000; i++)
{
if (i%3==0)
divisibleByThree++;
if (i%5==0)
divisibleByFive++;
if (i%5==0) && i%5==0)
divisibleByBoth++;
}
total = divisibleByThree + divisibleByFive - divisibleByBoth;
return total;
int-divisibleByThree=0;
int divisibleByFive=0;
int divisibleByBoth=0;
整数合计;
对于(int i=0;i这里有一个想法:
通过检查余数%==0来检查有多少个数可以被三整除。对五个数做同样的操作,然后对两个数都做同样的操作。从前两个数的总和中减去可以被二者整除的数,以得到准确的答案
int divisibleByThree=0;
int divisibleByFive=0;
int divisibleByBoth=0;
int total;
for(int i=0; i<1000; i++)
{
if (i%3==0)
divisibleByThree++;
if (i%5==0)
divisibleByFive++;
if (i%5==0) && i%5==0)
divisibleByBoth++;
}
total = divisibleByThree + divisibleByFive - divisibleByBoth;
return total;
int-divisibleByThree=0;
int divisibleByFive=0;
int divisibleByBoth=0;
整数合计;
对于(int i=0;i这里有一个想法:
通过检查余数%==0来检查有多少个数可以被三整除。对五个数做同样的操作,然后对两个数都做同样的操作。从前两个数的总和中减去可以被二者整除的数,以得到准确的答案
int divisibleByThree=0;
int divisibleByFive=0;
int divisibleByBoth=0;
int total;
for(int i=0; i<1000; i++)
{
if (i%3==0)
divisibleByThree++;
if (i%5==0)
divisibleByFive++;
if (i%5==0) && i%5==0)
divisibleByBoth++;
}
total = divisibleByThree + divisibleByFive - divisibleByBoth;
return total;
int-divisibleByThree=0;
int divisibleByFive=0;
int divisibleByBoth=0;
整数合计;
对于(int i=0;i这里有一个想法:
通过检查余数%==0来检查有多少个数可以被三整除。对五个数做同样的操作,然后对两个数都做同样的操作。从前两个数的总和中减去可以被二者整除的数,以得到准确的答案
int divisibleByThree=0;
int divisibleByFive=0;
int divisibleByBoth=0;
int total;
for(int i=0; i<1000; i++)
{
if (i%3==0)
divisibleByThree++;
if (i%5==0)
divisibleByFive++;
if (i%5==0) && i%5==0)
divisibleByBoth++;
}
total = divisibleByThree + divisibleByFive - divisibleByBoth;
return total;
int-divisibleByThree=0;
int divisibleByFive=0;
int divisibleByBoth=0;
整数合计;
对于(int i=0;i我想你需要这样的东西:
int sum = 0;
for (int i =0; i < 1000; ++i){
if(i % 3 == 0 || i % 5 == 0){
sum += i;
}
}
int和=0;
对于(int i=0;i<1000;++i){
如果(i%3==0 | | i%5==0){
总和+=i;
}
}
稍后编辑:我不知道为什么要计算小于1000的可被3或5整除的数字。问题(欧拉计划-问题1)要求计算所有小于1000的可被3或5整除的数字的总和。我想你需要这样的东西:
int sum = 0;
for (int i =0; i < 1000; ++i){
if(i % 3 == 0 || i % 5 == 0){
sum += i;
}
}
int和=0;
对于(int i=0;i<1000;++i){
如果(i%3==0 | | i%5==0){
总和+=i;
}
}
稍后编辑:我不知道为什么要计算小于1000的可被3或5整除的数字。问题(欧拉计划-问题1)要求计算所有小于1000的可被3或5整除的数字的总和。我想你需要这样的东西:
int sum = 0;
for (int i =0; i < 1000; ++i){
if(i % 3 == 0 || i % 5 == 0){
sum += i;
}
}
int和=0;
对于(int i=0;i<1000;++i){
如果(i%3==0 | | i%5==0){
总和+=i;
}
}
稍后编辑:我不知道为什么要计算小于1000的可被3或5整除的数字。问题(欧拉计划-问题1)要求计算所有小于1000的可被3或5整除的数字的总和。我想你需要这样的东西:
int sum = 0;
for (int i =0; i < 1000; ++i){
if(i % 3 == 0 || i % 5 == 0){
sum += i;
}
}
int和=0;
对于(int i=0;i<1000;++i){
如果(i%3==0 | | i%5==0){
总和+=i;
}
}
稍后编辑:我不知道您为什么要计算小于1000的可被3或5整除的数字。问题(欧拉计划-问题1)要求计算所有小于1000的可被3或5整除的数字的总和。
[0333]中n
的numTotalTree
溢出
- 3/2*(-2+2n)
类似地,[0200]中的n
的numTotalFive
- 5/2*(-2+2n)
所以你看到的是负值
正如其他人所建议的,您可能需要重新审视您的逻辑
您只需将[01000]中可被3或5整除的数字相加即可
size_t total =0;
for (size_t x =0; x < 1000; x++){
if( (x % 3 == 0) || (x % 5 == 0) ){
total += x;
}
}
size\u t总计=0;
用于(大小x=0;x<1000;x++){
如果((x%3==0)| |(x%5==0)){
总数+=x;
}
}
您的
[0333]中n
的numTotalTree
溢出
- 3/2*(-2+2n)
类似地,[0200]中的n
的numTotalFive
- 5/2*(-2+2n)
所以你看到的是负值
正如其他人所建议的,您可能需要重新审视您的逻辑
您只需将[01000]中可被3或5整除的数字相加即可
size_t total =0;
for (size_t x =0; x < 1000; x++){
if( (x % 3 == 0) || (x % 5 == 0) ){
total += x;
}
}
size\u t总计=0;
用于(大小x=0;x<1000;x++){
如果((x%3==0)| |(x%5==0)){
总数+=x;
}
}
您的