Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

Cactuc

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

#include <stdio.h>  
#include <string.h>  
#include <conio.h>
#include <math.h>
#include <stdlib.h>
 
const char NUM_CHARSET[]    = ".0123456789";
int getnumber(int &iNum, double &dNum)
{
    int ch, i = 0, pos = 0;
    char num[16];
    while ((i<15)&&((ch = getchar())!=10)) {
        num[i++] = ch;
    }
    num[i] = '\0';
    if ((pos = strspn(num, NUM_CHARSET)) != strlen(num)) {
        return -1;
    } else {
        if (strchr(num, '.') != 0) {
            dNum = atof(num);
            return 0;
        } else {
            iNum = atoi(num);
            return 1;
        }
    }
}
 
int main(int argc, char* argv[])
{
    double dNum;
    bool bFound;
    int i, j, max_i, max_j, n, n1, n2, n3, iNum, result;
 
    do {
        printf("Please enter interger number: ");
 
        if ((result = getnumber(iNum, dNum)) != -1) {
            if (result)
                n = iNum;
            else
                n = (int)dNum;
 
            bFound = false;
            max_i = floor(sqrt(double(n)));
            for (i=1; i<=max_i; i++) {
                n1 = n - i*i;
                if (n1 > 0) {
                    max_j = floor(sqrt(double(n1)));
                    for (j=1; j<=max_j; j++) {
                        n2 = n1 - j*j;
                        if (n2 > 0) {
                            n3 = floor(sqrt(double(n2)));
                            if (n2 == n3*n3) {
                                bFound = true;
                                break;
                            }    
                        }
                    }
                    if (bFound)
                        break;
                }
            }
            if (bFound) {
                printf("The interger number %d is a sum of squares of %d, %d, %d: %d + %d + %d\n", n, i, j, n3, i*i, j*j, n2);
            } else {
                printf("The interger number %d is not any sum of squares of integer numbers.\n", n);
            }
        }
    } while (result != -1);
}

Всего записей: 12 | Зарегистр. 16-03-2006 | Отправлено: 21:38 10-01-2007
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru