Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Линейное программирование, Задача 
:(
    Опции темы
VIvan
Дата 12.4.2006, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 12.4.2006

Репутация: нет
Всего: нет



Третий день как пытаюсь написать на Си хоть что то, а не получается ровным счетом ничего smile . Кому нетрудно помогите решить элементарную задачку

Дано действительное число x. Не пользуясь никакими другими арифметическими операциями, кроме умножения, сложения и вычитания, вычислить
2x4 – 3x3 + 4x2 – 5x + 6.
Разрешается использовать не более четырех умножений и четырех сложений и вычитаний. Исходные данные и результат вывести в табличной форме.

Буду очень признателен за любую посильную помощь.

PM MAIL   Вверх
_hunter
Дата 12.4.2006, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



это скорее математика.
разложи многочлен на члены и считай его


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
VIvan
Дата 12.4.2006, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 12.4.2006

Репутация: нет
Всего: нет



Подскажи как если не трудно smile
Разве это поможет сократить число операций ?
Добавлено @ 18:09
Да кстати x3 x4 и т.п (это степени)

Это сообщение отредактировал(а) VIvan - 12.4.2006, 18:07
PM MAIL   Вверх
asdf
Дата 12.4.2006, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 27.8.2004
Где: Кишинёвъ

Репутация: нет
Всего: 11



Код
#include <iostream>
using namespace std;

int main(void)
{
    double x;
    cin >> x;
    int pow=4, koeff=2;
    double res=0.0;
    do {
        int cur=koeff;
        for (int i=0;i<pow;i++){
            cur *= x;
        }
        if ( koeff&1 ) {
            cur=-cur;
        }
        res += cur;
    } while ( koeff++,pow-->0 ) ;
    cout << res;
    return 0;
}


Это сообщение отредактировал(а) asdf - 12.4.2006, 18:20
--------------------
... 
PM MAIL   Вверх
_hunter
Дата 12.4.2006, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



поможет. потому как многочлен будет выглядеть как (x+a)(x+b)(x+c)(c+d) -- три умножения + максимум 4 сложения/вычитания. возможно где-то коэффициент будет ( тогда как раз 4 умножениябудет )



--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
VIvan
Дата 12.4.2006, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 12.4.2006

Репутация: нет
Всего: нет



asdf, спасибо.
Но к сожалению необходимо написать эту прогу на чистом Си (не ++) smile
Добавлено @ 18:28
hunter, как же быть со степенями x4 x3 x2 (возведение в сетепень нельзя использовать, только умножение)
PM MAIL   Вверх
MAKCim
Дата 12.4.2006, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



2x^4-3x^3+4x^2-5x+6 <=> 6+x(-5+x(4+x(-3+2x)))
отсюда имеем 4 сложения и 4 умножения
это называется схема горнера
Код

#include <stdio.h>

int main()
{
    int array[5]={6,-5,4,-3,2};
    double y=0.0, x=5.0;
    int i;
    for (; i>=0; i--) y=y*x+array[i];
    printf("%f",y);
    return 0;
}


Это сообщение отредактировал(а) MAKCim - 12.4.2006, 18:36


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
asdf
Дата 12.4.2006, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 27.8.2004
Где: Кишинёвъ

Репутация: нет
Всего: 11



VIvan, хмм, ничем не могу помочь
Код
#include <stdio.h>    

int main(void)    
{    
    double x, res=0.0;
    int pow=4, koeff=2, i;    
    scanf("%lf", &x);
    do {    
        int cur=koeff;    
        for(i=0;i<pow;i++){    
            cur*=x;    
        }    
        if ( koeff&1 ) {    
            cur=-cur;    
        }    
        res+=cur;    
    } while ( koeff++,pow-->0 ) ;    
    printf("%lf", res);
    return 0;    
}


MAKCim, пропустил инициализацию в 7-ой строке

Код
int i=4;


Это сообщение отредактировал(а) asdf - 12.4.2006, 18:57
--------------------
... 
PM MAIL   Вверх
VIvan
Дата 12.4.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 12.4.2006

Репутация: нет
Всего: нет



MAKCim,
asdf,
_hunter,
СПАСИБО !!!
PM MAIL   Вверх
MAKCim
Дата 12.4.2006, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

пропустил инициализацию в 7-ой строке

да smile


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
regis
Дата 13.4.2006, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 12.12.2005
Где: Москва, Россия

Репутация: 2
Всего: 7



Цитата(VIvan @ 12.4.2006, 17:35)
Дано действительное число x. Не пользуясь никакими другими арифметическими операциями, кроме умножения, сложения и вычитания, вычислить
2x4 – 3x3 + 4x2 – 5x + 6.
Разрешается использовать не более четырех умножений и четырех сложений и вычитаний. Исходные данные и результат вывести в табличной форме.

Просто поищите в Сети "Схема Горнера"...


--------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0915 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.