найти д квадрат? - PullRequest
       1

найти д квадрат?

0 голосов
/ 14 февраля 2011
int n=16;

for(i=0;i<=n;i++) {
  if(n/i==i) {
    printf("its a square no");

  }
  else
    printf("not a square no.");

Я хочу напечатать одно утверждение, ни другое, ни утверждение if .... но вывод получится не простое 3 раза и не простое снова ...

помоги мне

вывод для n = 16 и n = 15

Ответы [ 2 ]

3 голосов
/ 14 февраля 2011

В вашем коде вы также должны проверить, что остаток равен 0:

((n/i==i) && (n%i==0))

РЕДАКТИРОВАТЬ

Как указал Шурд, я был особеннои вы можете просто проверить i*i==n так:

bool perfect(int n)
{
    for (int i=1; i<=n; i++)
        if (i*i==n)
            return true;
    return false;
}

Я понимаю, что это C ++, но вы получите картину!

2 голосов
/ 14 февраля 2011

Возможно

int n=16;
for(i=0;1<=n;i++)

должно быть

float n=16.0;
for(float i=1.0;i<=n;i++)

i = 1,0, так как вы не должны делить на ноль

вы можете использовать found_square = 1, когда выуспешный, и, возможно, используйте другой оператор if / else для печати, если n является квадратом, в зависимости от значения found_square.

также вы можете добавить команду прерывания после вашего успешного случая.Как только вы добьетесь успеха, не будет необходимости продолжать цикл for.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...