2016-07-21 4 views
1

Я пытаюсь найти сумму каждой цифры в квадрате целого числа, и для любого целого числа, которое вводится в sqdnumber, оно выводит 0 в sqdNumber_result, и я не могу понять, почему.Почему этот цикл выводит 0 каждый раз на sqdNumber_result?

Кроме того, это через edX, но я застрял в течение недели или около того по этой проблеме, и я просмотрел множество разных тем, но не нашел для меня ничего полезного.

Я использовал CodeBlocks написать это, но система тестирования использует codeboard

void squaredSum(int sqdnumber,int &sqdNumber_result) { 
for (int i=1; i>1; i++){ 
    if (sqdnumber >= ((10^(i-1))-1)){ 
     int rem = (sqdnumber % (10^i)); 
     int rem1 = (sqdnumber % (10^(i-1))); 
     int temp = (rem - rem1); 
     sqdNumber_result = sqdNumber_result + (temp^2); 
    } 

    else{ 
     break; 
    } 
} 
} 

Я новичок в кодирование, и только учусь делать петлю в C++.

Это первая итерация цикла. Я получил свою систему, чтобы фактически дать мне результат для нее (я написал и переписал ее примерно 20 раз), но это не дает мне выход, который делает смысл.

Я бы не просил, но я нахожусь в конце своего ума.

ответ

5

В C++ ^ является xor operator, а не n-й мощностью. для этого вы должны использовать pow.

+0

Спасибо, я не знал об этом, чтобы использовать функцию POW Мне нужно использовать #include правильно? –

+0

'' в C++. – LogicStuff

+0

@JamesChristie, если это отвечает на вопрос, вежливо принять его как ответ. – GreatAndPowerfulOz

3

Оператор for не замыкается. Условие ложно, первая итерация

+1

Примечание к OP: Это было бы очень легко увидеть, запустив отладчик и выполнив функцию. – chris

1

Есть два вопроса:

for (int i=1; i>1; i++){ 

Этот цикл будет не петля на всех, так как условие i>1 разу не встречались.


Второй проблемой является использование ^ сделать операцию питания. ^ в C++ не является оператором питания, это оператор exclusive-or.

Таким образом, ответ на первый взгляд должен был бы использовать функцию std::pow для вычисления мощности. Однако могут быть недостатки, если это показатель является целым числом. Причина в том, что powне гарантированно отлично работает для целых степеней.

Смотрите это, чтобы dangers of using pow() for integral exponents

Рекомендуется использовать только простой массив значений с полномочиями 10 и делать поиск.

-3

Вы сказали, что были новичком на C++, поэтому я попытался получить решение, не используя цикл for, и попытался сделать это как можно проще. Сообщите мне, если это поможет.

//Code to calculate the sum of each digit squared// 
#include<iostream> 

using namespace std; 
int main() 
{ 
    int integer1,integer2,sum, square; 

    cout<<"Please enter two integers"<<endl; 

    cin>>integer1>>integer2 ; 

    cout<<"The sum of your integers is"<<" "<<endl; 

    sum = (integer1+integer2); 

    cout<<sum<<endl; 

    cout<<"The square of your sum is"<<" "<<endl; 

    square = (sum*sum); 

    cout<<square<<endl; 

return 0; 
} 
+0

И объяснение «Почему этот цикл выводит 0 каждый раз в sqdNumber_result?» это здесь? Ваш ответ кажется совершенно не связанным. –

Смежные вопросы