Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.62
Лестат
12 / 11 / 1
Регистрация: 24.09.2009
Сообщений: 188
#1

структура,описание полинома - C++

08.12.2009, 20:31. Просмотров 5992. Ответов 41
Метки нет (Все метки)

ПЛЗ, помогите ,
надо написать на языке С
Ввести структуру для описания понятия алгебраический полином. Составить и протестировать функции для :
а) ввода полинома;
б) вывода полинома;
в) нормализации полинома;
г) сложения полиномов;
д) вычитания полиномов;
е) умножения полиномов;
ж) деления полиномов;
з) дифференцирования полинома;
и) интегрирования полинома.
Люди, прошу, помогите, я вообще в шоке от этой задачи.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2009, 20:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос структура,описание полинома (C++):

Где пишется описание для выходного файла .exe (например описание процесса) - C++
Консольный проект, скомпилировали, получили exe. Жмем правой кнопкой на нем\свойства\вкладка подробно, почти все описание exe файла...

В текстовом файле структура – информация о компьютерах. Структура с полями: название, стоимость. - C++
Ребят, помогите пожалуйста, 29 июня экзамен по "Основы программирования",кто сколько сможет сделать задач, тем всей группой поставим "+"...

Структура «База», сущности «Универсам» и «Продукты», структура «Товар» - C++
1. Создать структуру «База», включающую не менее 3 полей. 2. Создать сущности «Универсам» и «Продукты» описанной структуры. 3. Создать...

Структура DateTime, битовая структура - C++
Условие: Структура содержит информацию о дате и времени некоторого события: struct datetime { unsigned short Year; // год ...

Структура, доступная из всех файлов проекта ("глобальная" структура) - C++
Есть четыре структуры (body, gun, enemy, st), описанные в main.cpp. К main.cpp подключен хедер save.h, в котором имеется функция void...

Коэффициенты полинома - C++
подскажите пожалуйста, каким методом нужно считать коэффициенты? как составить программу для их вычисления?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Лестат
12 / 11 / 1
Регистрация: 24.09.2009
Сообщений: 188
14.01.2010, 16:40  [ТС] #31
Плз, люди помогите. От этой задачи решается моя судьба по программированию....
Очень прошу HELP . мне её завтра сдавать, а я не успеваю... ПЛЗ, очень прошу , напишите ...
ПЛЗЗЗЗ.
0
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
14.01.2010, 17:48 #32
немного поправил под себя код accept организовал функции ввода и вывода, сложение\вычитание организовать можешь сам, а вот с диффиренированикм и интегрированием тут тебе наврядли кто поможет
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
struct polinom {
    double *k;
    unsigned int n;
};
 
 
 
polinom * CreatePolinom()
{
    polinom *p= (polinom *) malloc(sizeof(polinom));
 
    // ввод количества коэффициентво без проверки на дурака
    printf("Enter number coefficients in polinom: "); scanf("%i",&(p->n));
 
    // выделяем память под коэффициенты
    p->k = (double *) calloc(p->n, sizeof(double));
    for (int i=0; i<p->n; i++)
    {
        printf("Enter coefficient by x^%i: ",i);  scanf("%lf",&(p->k[i]));
    }
 
    return p;
}
 
void PrintfPolinom(polinom * p)
{
    for (int i=p->n; --i>=1;)   printf("%.2lf*x^%i + ",p->k[i],i);  
    printf("%.2lf",p->k[0]);  
}
 
 
int main(void) 
{
    polinom *p;
 
    if ((p=CreatePolinom()) == NULL)
        exit(EXIT_FAILURE);
 
    PrintfPolinom(p);
 
    getch();
    exit(EXIT_SUCCESS);
}
1
Лестат
12 / 11 / 1
Регистрация: 24.09.2009
Сообщений: 188
14.01.2010, 17:51  [ТС] #33
ясно, очень жаль =(.
Спасибо большое

Добавлено через 1 минуту
а нармализация, вычитание, умножение , деление ? ...
0
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
14.01.2010, 18:15 #34
Цитата Сообщение от Лестат Посмотреть сообщение
ясно, очень жаль =(.
Спасибо большое

Добавлено через 1 минуту
а нармализация, вычитание, умножение , деление ? ...
вот вычитание, остальное по подобию
с умножением посерьёзнее. там степени могут расти, для этого чтобы с переопределением памяти не возиться, можно попробовать сразу памяти выделять не под n коэффициентов а под 2*n-1 и забивать неиспользуемые коэффииенты нулями. а в функии PrintPolinom не выводить данные с нулевыми коэффициентами.
таким образом при умножении находишь самый длинный полином, смело умножаешь и при возрастании степени полинома задействуешь свободные коэффициенты, но опять же если опять умножение повториться, то свободная память иссякнет, всё равно придётся с реалоком возиться.

интересные вам задачки задают товарищ Лестат жаль времени нема, увы работа
а вам широкие перспективы для развития предоставляются

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
struct polinom {
    double *k;
    unsigned int n;
};
 
 
 
polinom * CreatePolinom()
{
    polinom *p= (polinom *) malloc(sizeof(polinom));
 
    // ввод количества коэффициентво без проверки на дурака
    printf("Enter number coefficients in polinom: "); scanf("%i",&(p->n));
 
    // выделяем память под коэффициенты
    p->k = (double *) calloc(p->n, sizeof(double));
    for (int i=0; i<p->n; i++)
    {
        printf("Enter coefficient by x^%i: ",i);  scanf("%lf",&(p->k[i]));
    }
 
    return p;
}
 
void PrintfPolinom(polinom * p)
{
    for (int i=p->n; --i>=1;)       printf("%.2lf*x^%i + ",p->k[i],i);  
    printf("%.2lf",p->k[0]);  
}
 
polinom * Deduction(polinom * a, polinom * b)
{
  // работаем только с коэфициентами полинов, внимание к количеству коэффициентов
    if (a->n < b->n)
    {
        for (int i=a->n; i<b->n; i++)
        {
             b->k[i]=-b->k[i];
        }
 
        for (int i=0; i<b->n; i++)
        {
            b->k[i]-=a->k[i];
        }
        return b;
    }
 
    for (int i=0; i<b->n; i++)
    {
            a->k[i]-=b->k[i];
    }
    return a;
    
}
 
int main(void) 
{
    polinom *a, *b;
 
    if ((a=CreatePolinom()) == NULL)
        exit(EXIT_FAILURE);
 
    if ((b=CreatePolinom()) == NULL)
        exit(EXIT_FAILURE);
 
    a=Deduction(a,b);
    PrintfPolinom(a);
 
    getch();
    exit(EXIT_SUCCESS);
}
1
Лестат
12 / 11 / 1
Регистрация: 24.09.2009
Сообщений: 188
14.01.2010, 18:19  [ТС] #35
спасибо ; та какие ж там интересные - жуть, а не задачи =(. Тем более с тем количеством лекций, что в институте, такие задачи не написать =(. Даже с использованием некоторого кол-ва литературы
0
Лестат
12 / 11 / 1
Регистрация: 24.09.2009
Сообщений: 188
17.01.2010, 01:06  [ТС] #36
народ, кто-нить может написать нормализацию, умножение, деление, дифференцирование, интегрирование ? ( ну короче говоря, все пункты кроме ввода, вывода, вычитания) ....
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
17.01.2010, 09:31 #37
http://www.pmpu.ru/vf4/polynomial
нормализация
умножение прикольное

дифференцирование и интегрирование простое - по частям

Добавлено через 5 часов 13 минут
без выделений памяти
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <stdio.h>
#include <stdlib.h>
 
struct polinom {
    double coeff[100];
    size_t n;
};
 
void NormalizePolinom(struct polinom *p);
 
/* normalizes a polinom */
int main(void) /* C89 ANSI */
{
    struct polinom p = {
        { 1.0, 2.0, 4.5, 0.5 },
        4
    };
    int i;
    
    printf("an initial polinom:" "\n");
    
    for (i = p.n-1; i >= 0; i--)
        printf(
            "degree %d, coefficient = %g" "\n",
            i,
            p.coeff[i]
        );
        
    NormalizePolinom(&p);
    
    printf("a normalized polinom:" "\n");
    for (i = p.n-1; i >= 0; i--)
        printf(
            "degree %d, coefficient = %g" "\n",
            i,
            p.coeff[i]
        );
    
    exit(EXIT_SUCCESS);
}
 
void NormalizePolinom(struct polinom *p)
{
    double first;
    size_t i, n;
    
    n = p->n;
    
    first = p->coeff[n-1];
 
    if (first == 1.0)
        return;
 
    for (i = 0; i < n; i++)
        p->coeff[i] /= first;
}
1
Лестат
12 / 11 / 1
Регистрация: 24.09.2009
Сообщений: 188
30.01.2010, 10:02  [ТС] #38
а не можете ли написать интегрирование и дифференцирование ? до сих пор не смог написать =((
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
01.02.2010, 11:01 #39
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#include <stdlib.h>
 
struct polinom {
    double coeff[100];
    size_t n;
};
 
void DiffPolinom(struct polinom *p);
 
/* differentiates a polynomial */
int main(void) /* C89 ANSI */
{
    int i;
    
    struct polinom p3 = {
        { -1.0, 2, -3, 0.5 },
        4
    };
    
    for (i = p3.n-1; i >= 0; i--)
        printf("%5g * x^%d" "\n", p3.coeff[i], i);
    
    putchar('\n');
    
    DiffPolinom(&p3);
    
    for (i = p3.n-1; i >= 0; i--)
            printf("%5g * x^%d" "\n", p3.coeff[i], i);
        
    exit(EXIT_SUCCESS);
}
 
void DiffPolinom(struct polinom *p)
{
    size_t i;
    
    for (i = 1; i < p->n; i++)
        p->coeff[i-1] = p->coeff[i]*i;
    p->n--;
}
Код
[guest@station Release]$ ./test
  0.5 * x^3
   -3 * x^2
    2 * x^1
   -1 * x^0

  1.5 * x^2
   -6 * x^1
    2 * x^0
[guest@station Release]$
Добавлено через 8 часов 50 минут
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <stdlib.h>
 
struct polinom {
    double coeff[100];
    size_t n;
};
 
void IntegratePolinom(struct polinom *p);
 
/* integrates a polynomial */
int main(void) /* C89 ANSI */
{
    int i;
    
    struct polinom p3 = {
        { 1.0, -2.0, 3.0, 3.0 },
        4
    };
    
    for (i = p3.n-1; i >= 0; i--)
        printf("%5g * x^%d" "\n", p3.coeff[i], i);
    
    putchar('\n');
    
    IntegratePolinom(&p3);
    
    for (i = p3.n-1; i >= 0; i--)
        printf("%5g * x^%d" "\n", p3.coeff[i], i);
        
    exit(EXIT_SUCCESS);
}
 
void IntegratePolinom(struct polinom *p)
{
    size_t i;
    double prevval, newval;
    
    newval = 1.0;
    
    for (i = 0; i < p->n; i++) {
        prevval = p->coeff[i];
        p->coeff[i] = newval;
        newval = prevval/(i+1);
    }
    p->coeff[i] = newval;
    p->n++;
}
Код
[guest@station test]$ ./test
    3 * x^3
    3 * x^2
   -2 * x^1
    1 * x^0

 0.75 * x^4
    1 * x^3
   -1 * x^2
    1 * x^1
    1 * x^0
[guest@station test]$
Добавлено через 2 минуты
p3 превратилось в p4
то есть это надо создать p4, скопировать в него p3 и передать в функцию интегрирования
1
Лестат
12 / 11 / 1
Регистрация: 24.09.2009
Сообщений: 188
03.02.2010, 19:49  [ТС] #40
народ, никто не может написать умножение и деление ?плз, сдавать задачу уже скоро, я пробывал, но мои попытки не увенчались успехом . ПЛЗ, оч прошу
0
Dopler
3 / 3 / 1
Регистрация: 03.02.2010
Сообщений: 15
03.02.2010, 22:22 #41
На счет деления, нужно разбивать на элементарные дроби, алгоритм не помню, посмотри в каком нибудь учебнике по мат. анализу.
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.02.2010, 07:20 #42
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <stdio.h>
#include <stdlib.h>
 
struct polinom {
    double coeff[100];
    size_t n;
};
 
void MultiplyPolinom(
     struct polinom *m,
     struct polinom *p1,
     struct polinom *p2);
 
/* multiplies polynomials */
int main(void) /* C89 ANSI */
{
    int i;
    
    struct polinom p2_1 = {
        { -1.0, 1.0 },
        2
    };
    
    struct polinom p2_2 = {
        { -1.0, 1.0 },
        2
    };
    
    struct polinom p_multi = { { 0.0 } };
    
    MultiplyPolinom(&p_multi, &p2_1, &p2_2);
 
    printf("the 1st polynomial:" "\n");
    
    for (i = p2_1.n-1; i >= 0; i--)
        printf("%5g * x^%d" "\n", p2_1.coeff[i], i);
 
    printf("the 2nd polynomial:" "\n");
    
    for (i = p2_2.n-1; i >= 0; i--)
        printf("%5g * x^%d" "\n", p2_2.coeff[i], i);
    
    printf("the multip. product:" "\n");
    
    for (i = p_multi.n-1; i >= 0; i--)
        printf("%5g * x^%d" "\n", p_multi.coeff[i], i);
    
    
    exit(EXIT_SUCCESS);
}
 
void MultiplyPolinom(
     struct polinom *m,
     struct polinom *p1,
     struct polinom *p2)
{
    size_t i, j;
    
    for (i = 0; i < p1->n; i++) {
        if (p1->coeff[i] == 0.0)
            continue;
        for (j = 0; j < p2->n; j++) {
            if (p2->coeff[j] == 0.0)
                continue;
            m->coeff[i+j] += p1->coeff[i]
                           * p2->coeff[j];
        }
    }
    m->n = p1->n-1 + p2->n-1 + 1;
}
Код
[guest@station test]$ ./test
the 1st polynomial:
    1 * x^1
   -1 * x^0
the 2nd polynomial:
    1 * x^1
   -1 * x^0
the multip. product:
    1 * x^2
   -2 * x^1
    1 * x^0
[guest@station test]$
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2010, 07:20
Привет! Вот еще темы с ответами:

Сложение полинома - C++
Помогите устранить ошибку в коде #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; class Polynom { unsigned int...

Умножение полинома - C++
Написал черновой #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;sstream&gt; #include &lt;string&gt; #include &lt;stdlib.h&gt; using namespace...

Список полинома - C++
Класс полином и класс список для полинома. В списке в функции SortAdd перед return выдает ошибку. С чем может быть связано? Код: ...

Реализовать вывод полинома - C++
void TMyMathematic::printSet()const { cout &lt;&lt; &quot;\nMy Primer: &quot; &lt;&lt; endl; for (int i = 0; i &lt; size ; i ++ ) { cout &lt;&lt; chislitel &lt;&lt; &quot;/&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.02.2010, 07:20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru