Почему с++ игнорирует условие if ? - Вопросы по С+

Вопрос Почему с++ игнорирует условие if ?

Регистрация
3 Авг 2013
Сообщения
95
Репутация
0
Спасибо
0
Монет
0
Нужно составить программу раскладывающую число на 3 квадрата

Программа в принципе игнорирует любой код, а не только If, если оказывается что число раскладывается по 3 квадратам. с нераскладывающимися числами проблем нет



#include <iostream>

#include <cmath>

using namespace std;



int main()

{

setlocale(LC_ALL, "Rus");

int a = 0, q = 0, s = 0, y = 0, z = 0, w = 0;

cout << "Введите число: ";

cin >> a;

for (int i = a; (4 * i) % 4 == 0; i /= 4) //Теорема Лежандра о трёх квадратах

{

if ((i - 7) % 8 == 0)

{

q++;

break;

}

}

if (q == 1) //Не раскладывается на три квадрата

{

cout << "No solution." << endl;

}

if (q == 0) //Раскладывается на три квадрата

{

for (int j = 0; j < sqrt(a); j++)

{

for (int k = j; k < sqrt(a); k++)

{

for (int m = k; m < sqrt(a) + 1; m++)

{

if (j * j + k * k + m * m == a)

{

y = j;

z = k;

w = m;

s++;

goto link;

}



}

}

}

}

link:

if (s == 1)

{

cout << a << " = " << y << "^2 + " << z << "^2 + " << w << "^2" << endl;

}

return 0;

}
 
Регистрация
14 Дек 2013
Сообщения
85
Репутация
-3
Спасибо
0
Монет
0
Поверхностно разбираюсь в программировании. Не нужен ли тут else?
 
Регистрация
25 Июн 2013
Сообщения
84
Репутация
0
Спасибо
0
Монет
0
Что-то мне не нравится данное условие
(4 * i) % 4 == 0

Умножаем любое число на 4
Делим на 4 и какой остаток получим? Что-то мне подсказывает, что это всегда будет 0
 
Регистрация
11 Сен 2013
Сообщения
80
Репутация
0
Спасибо
0
Монет
0
потому что надо мейнить пайтон
 
Сверху Снизу