С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
1

Реализовать основные операции с вещественными многочленами

25.02.2010, 18:30. Показов 1307. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Реализовать основные операции с вещественными многочленами вида
P(x)=Pn*x^n+P(n-1)*x^(n-1)+...+p1*x+p0
сложение, разность,умножение,производная ,значение в точке.Оформить эти операции в виде процедур.
Вот что нарешал:
Pascal
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
uses crt;
const
     m=10;
type
    vector=array [1..m] of integer;
procedure slogenie(x,y:vector;g,h:integer;
                   var z:vector);
var
   t:integer;
begin
 
  for t:=1 to m do
    z[t]:=x[t]+y[t];
  if g>h then
  begin
     writeln('v rezultate slogeni9 poluchils9 mnog stepeni ',g);
     writeln('s koefficentami');
    for t:=1 to g+1 do
      writeln(z[t]);
  end
  else
  begin
    writeln('v rezultate slogeni9 poluchils9 mnog stepeni ',h);
    writeln('s koefficentami');
    for t:=1 to h+1 do
      writeln(z[t]);
  end;
end;
var
   a,b,f:vector;
   i,c,d,e:integer;
begin
  clrscr;
  writeln('vvedite stpenb pervogo mnog');
  readln(c);
  writeln('vvedite koefficentbl,nachina9 so starshei stepeni');
  for i:=1 to c+1 do
    readln(a[i]);
  for i:=c+2 to m do
    a[i]:=0;
  writeln('vvedite stpenb vtorogo mnog');
  readln(d);
  writeln('vvedite koefficentbl,nachina9 so starshei stepeni');
  for i:=1 to d+1 do
    readln(b[i]);
  for i:=d+2 to m do
    b[i]:=0;
  writeln('vblberite deistvie,nagav na klavishu');
  writeln('1-slogenie');
  writeln('2-raznost');
  writeln('3-umnozhenie');
  writeln('4-proizvodna9');
  writeln('5-znachenie v tochke');
  writeln('6-vblxod');
  readln(e);
  case e of
    1:slogenie(a,b,c,d,f);
  {  2:
    3:
    4:
    5: }
    6:exit;
  end;
  readln;
end.
написал только процедуру сложения ,да и то не правильно:если ввести многочлены разных степеней,то коэффициенты считает не верно.
Знатоки,помогите пожалуйста!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.02.2010, 18:30
Ответы с готовыми решениями:

Реализовать основные операции с бинарными деревьями
Реализовать алгоритм построения бинарного дерева. Данные в вершинах заполнить случайными числами....

Используя массивы, реализовать основные операции над множествами
Здравствуйте, помогите решить задачку: Используя массивы, реализовать основные операции над...

Используя массивы, реализовать основные операции над множествами
Здравствуйте, помогите, пожалуйста, решить задачку:

Используя массивы, реализовать основные операции над множествами
Здравствуйте, помогите решить задачку: Используя массивы, реализовать основные операции над...

2
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
04.03.2010, 15:41  [ТС] 2
Смог сделать сложение и вычитание)
Пожалуйста помогите с умножением
Pascal
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
uses crt;
const
     m=10;
type
    vector=array [1..m] of integer;
procedure slogenie(x,y:vector;g,h:integer;
                   var z:vector);
var
   i:integer;
begin
  if g>h then
  begin
    writeln('stepen=',g);
    for i:=g+1 downto 1 do
      z[i]:=x[i]+y[i-(g-h)];
    for i:=1 to g-h do
      z[i]:=x[i];
    for i:=1 to g+1 do
      begin
        if g-i+1<>0 then
          write(z[i]:1,'x^',g-i+1,'+')
        else
          write(z[i]:1)
      end;
  end
  else
  begin
    writeln('stepen=',h);
    for i:=h+1 downto 1 do
      z[i]:=y[i]+x[i-(h-g)];
    for i:=1 to h-g do
      z[i]:=x[i];
    for i:=1 to h+1 do
    begin
      if h-i+1<>0 then
        write(z[i]:1,'x^',h-i+1,'+')
      else
        write(z[i]:1);
    end;
  end;
end;
procedure raznost(x,y:vector;g,h:integer;
                   var z:vector);
var
   i:integer;
begin
  if g>h then
    begin
      writeln('stepen=',g);
      for i:=g+1 downto 1 do
        z[i]:=x[i]-y[i-(g-h)];
      for i:=1 to g-h do
        z[i]:=x[i];
      for i:=1 to g+1 do
        begin
          if g-i+1<>0 then
            write(z[i]:1,'x^',g-i+1,'+')
          else
            write(z[i]:1)
        end;
    end
    else
    begin
      writeln('stepen=',h);
      for i:=h+1 downto 1 do
        z[i]:=y[i]-x[i-(h-g)];
      for i:=1 to h-g do
        z[i]:=x[i];
      write('-(');
      for i:=1 to h+1 do
      begin
       if h-i+1<>0 then
          write(z[i]:1,'x^',h-i+1,'+')
        else
          write(z[i]:1,')');
    end;
    end;
end;
var
   a,b,f:vector;
   i,c,d,e:integer;
begin
  clrscr;
  writeln('vvedite stpenb pervogo mnog');
  readln(c);
  writeln('vvedite koefficentbl,nachina9 so starshei stepeni');
  for i:=1 to c+1 do
    readln(a[i]);
  for i:=c+2 to m do
    a[i]:=0;
  writeln('vvedite stpenb vtorogo mnog');
  readln(d);
  writeln('vvedite koefficentbl,nachina9 so starshei stepeni');
  for i:=1 to d+1 do
    readln(b[i]);
  for i:=d+2 to m do
    b[i]:=0;
  writeln('vblberite deistvie,nagav na klavishu');
  writeln('1-slogenie');
  writeln('2-raznost');
  writeln('3-umnozhenie');
  writeln('4-proizvodna9');
  writeln('5-znachenie v tochke');
  writeln('6-vblxod');
  readln(e);
  case e of
    1:slogenie(a,b,c,d,f);
    2:raznost(a,b,c,d,f);
  {  3:
    4:
    5: }
    6:exit;
  end;
  readln;
end.
Добавлено через 15 часов 44 минуты
Сделал ещё 2 процедуры:нахождение производной и значения в токе.
Помогите сделать умножение,никак не получается!
Pascal
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
uses crt;
const
     m=10;
type
    vector=array [1..m] of integer;
procedure slogenie(x,y:vector;g,h:integer;
                   var z:vector);
var
   i:integer;
begin
  if g>h then
  begin
    writeln('stepen=',g);
    for i:=g+1 downto 1 do
      z[i]:=x[i]+y[i-(g-h)];
    for i:=1 to g-h do
      z[i]:=x[i];
    for i:=1 to g+1 do
      begin
        if g-i+1<>0 then
          write(z[i]:1,'x^',g-i+1,'+')
        else
          write(z[i]:1)
      end;
  end
  else
  begin
    writeln('stepen=',h);
    for i:=h+1 downto 1 do
      z[i]:=y[i]+x[i-(h-g)];
    for i:=1 to h-g do
      z[i]:=x[i];
    for i:=1 to h+1 do
    begin
      if h-i+1<>0 then
        write(z[i]:1,'x^',h-i+1,'+')
      else
        write(z[i]:1);
    end;
  end;
end;
procedure raznost(x,y:vector;g,h:integer;
                   var z:vector);
var
   i:integer;
begin
  if g>h then
    begin
      writeln('stepen=',g);
      for i:=g+1 downto 1 do
        z[i]:=x[i]-y[i-(g-h)];
      for i:=1 to g-h do
        z[i]:=x[i];
      for i:=1 to g+1 do
        begin
          if g-i+1<>0 then
            write(z[i]:1,'x^',g-i+1,'+')
          else
            write(z[i]:1)
        end;
    end
    else
    begin
      writeln('stepen=',h);
      for i:=h+1 downto 1 do
        z[i]:=y[i]-x[i-(h-g)];
      for i:=1 to h-g do
        z[i]:=x[i];
      write('-(');
      for i:=1 to h+1 do
      begin
       if h-i+1<>0 then
          write(z[i]:1,'x^',h-i+1,'+')
       else
          write(z[i]:1,')');
      end;
    end;
end;
procedure proizvod(x:vector;g:integer;
                   var z:vector);
var
   i:integer;
begin
  for i:=1 to g+1 do
    x[i]:=x[i]*(g+1-i);
  writeln('stepen=',g-1);
  for i:=1 to g do
  begin
    z[i]:=x[i];
    if g-i<>0 then
      write(z[i]:1,'x^',g-i,'+')
    else write(z[i]);
  end;
end;
procedure znach(x:vector;g,x1:integer;
                var s:real);
var
   i,t:integer;
begin
  s:=0;
  if x1>0 then
    for i:=1 to g+1 do
      s:=s+x[i]*exp((g+1-i)*ln(x1))
  else
  begin
    t:=abs(x1);
    for i:=1 to g+1 do
    begin
      if (g+1-i) mod 2=0 then
        s:=s+x[i]*exp((g+1-i)*ln(t))
      else
        s:=s+x[i]*(-1)*exp((g+1-i)*ln(t));
    end;
  end;
    writeln('P=',s:2:3);
end;
var
   a,b,f:vector;
   i,c,d,e,x0:integer;
   p:real;
begin
  clrscr;
  writeln('vvedite stpenb pervogo mnog');
  readln(c);
  writeln('vvedite koefficentbl,nachina9 so starshei stepeni');
  for i:=1 to c+1 do
    readln(a[i]);
  for i:=c+2 to m do
    a[i]:=0;
  writeln('vvedite stpenb vtorogo mnog');
  readln(d);
  writeln('vvedite koefficentbl,nachina9 so starshei stepeni');
  for i:=1 to d+1 do
    readln(b[i]);
  for i:=d+2 to m do
    b[i]:=0;
  writeln('vblberite deistvie,nagav na klavishu');
  writeln('1-slogenie');
  writeln('2-raznost');
  writeln('3-umnozhenie');
  writeln('4-proizvodna9 pevogo mnog');
  writeln('5-proizvodna9 vtorogo mnog');
  writeln('6-znachenie pervogo mnog v tochke');
  writeln('7-znachenie vtorogo mnog v tochke');
  writeln('8-vblxod');
  readln(e);
  case e of
    1:slogenie(a,b,c,d,f);
    2:raznost(a,b,c,d,f);
 {   3: }
    4:proizvod(a,c,f);
    5:proizvod(b,d,f);
    6:begin
        writeln('vvedite znachenie');
        readln(x0);
        znach(a,c,x0,p);
      end;
    7:begin
        writeln('vvedite znachenie');
        readln(x0);
        znach(b,d,x0,p);
      end;
    8:exit;
  end;
  readln;
end.
0
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
14.03.2010, 16:24  [ТС] 3
Написал программу, производящую основные операции с многочленами,гораздо понятнее и эффективнее предидущей.
Pascal
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
program laba10_22;
uses crt;
const
     n=100;
     m=100;
type
    vector=array [1..n] of integer;
    matrix=array [1..n,1..m] of integer;
 
{Прцедура ввода многочлена}
procedure scan(var q:integer;var w:vector);
var
   i:integer;
begin
  writeln('введите степень многочлена');
  readln(q);
  writeln('введите коэффициенты многочлена начиная со свободного члена');
  for i:=1 to q+1 do
    readln(w[i]);
end;
 
{процедура вывода многочлена,
выводит начиная с коэффициента перед старшей степенью,
соблюдает знаки}
procedure print(c:integer;a:vector);
var
   i,s:integer;
begin
   s:=0;
   for i:=c+1 downto 1 do
   begin
     inc(s);
     if (a[i-1]>=0) and (i<>1) then
         write(a[i],'x^',c-s+1,'+')
     else
     begin
       if a[i-1]<0 then
         write(a[i],'x^',c-s+1);
       if i=1 then
         write(a[i]);
     end;
   end;
end;
 
{Процедура сложения многочленов}
procedure addition(c,d:integer;a,b:vector;
                   var k:integer;var z:vector);
var
   i:integer;
begin
  if c>d then
  begin
    k:=c;
    for i:=1 to c+1 do
      z[i]:=a[i]+b[i];
  end
  else
  begin
    k:=d;
    for i:=1 to d+1 do
      z[i]:=a[i]+b[i];
  end;
end;
 
{Процедура,вычисляющая разность многочленов}
procedure difference(c,d:integer;a,b:vector;
                   var k:integer;var z:vector);
var
   i:integer;
begin
  if c>d then
  begin
    k:=c;
    for i:=1 to c+1 do
      z[i]:=a[i]-b[i];
  end
  else
  begin
    k:=d;
    for i:=1 to d+1 do
      z[i]:=a[i]-b[i];
  end;
end;
 
{Процедура,вычисляющая произведение многочленов}
{procedure increase(c,d:integer;a,b:vector;
                   var k:integer;var z:vector);
var
   i,j:integer;
   g:matrix;
begin
  k:=c*d;
  for i:=1 to c+1 do
    for j:=1 to d+1 do
      g[i,j]:=a[i]*b[j];
  z[1]:=g[1,1];
  z[c*d+1]:=g[c+1,d+1];
  for i:=2 to c*d do
    for j:=1 to
end; }
 
{Процедура,вычисляющая производную многочлена}
procedure proizvod(c:integer;a:vector;var k:integer;var z:vector);
var i:integer;
begin
  k:=c-1;
  for i:=1 to c+1 do
    a[i]:=a[i]*(i-1);
  for i:=1 to c do
    z[i]:=a[i+1];
end;
 
{Процедура,вычисляющая значение многочлена в точке}
procedure value(c:integer;a:vector;x:real;var s:real);
var
   i:integer;
   t:real;
begin
  s:=0;
  if x<>0 then
  begin
    if x>0 then
      for i:=1 to c+1 do
        s:=s+a[i]*exp((i-1)*ln(x))
    else
    begin
      t:=abs(x);
      for i:=1 to c+1 do
      begin
        if (i-1) mod 2=0 then
          s:=s+a[i]*exp((i-1)*ln(t))
        else
          s:=s+a[i]*(-1)*exp((i-1)*ln(t));
      end;
    end;
    writeln('P=',s:3:2);
  end
  else
    writeln('P=',a[1]);
end;
 
{текст основной программы}
var a,b,z:vector;
    e,c,d,k,i:integer;
    x0,p:real;
begin
  clrscr;
  writeln('выберите действие нажав на клавишу');
  writeln('1-сложение');
  writeln('2-раность');
  writeln('3-умножение');
  writeln('4-производная');
  writeln('5-значение в точке');
  writeln('6-выход');
  readln(e);
  case e of
    1:begin
        scan(c,a);
        writeln('введите второй многочлен');
        scan(d,b);
        addition(c,d,a,b,k,z);
        print(k,z);
      end;
    2:begin
        scan(c,a);
        writeln('введите второй многочлен');
        scan(d,b);
        difference(c,d,a,b,k,z);
        print(k,z);
      end;
  {  3:begin
        scan(c,a);
        writeln('введите второй многочлен');
        scan(d,b);
        increase(c,d,a,b,k,z);
        print(k,z);
      end;  }
    4:begin
        scan(c,a);
        proizvod(c,a,k,z);
        print(k,z);
      end;
    5:begin
        scan(c,a);
        writeln('введите значение');
        readln(x0);
        value(c,a,x0,p);
      end;
    6:exit;
  end;
  readln;
end.
помогите пожалуйста написать процедуру умножения,я уже так устал,все перепробовал!!!
0
14.03.2010, 16:24
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.03.2010, 16:24
Помогаю со студенческими работами здесь

Используя массивы, реализовать основные операции над множествами
Здравствуйте, помогите решить задачку: Используя массивы, реализовать основные операции над...

Составить описание класса для работы с бинарными деревьями поиска и реализовать основные операции
Составить описание класса для работы с бинарными деревьями поиска (BST). Обеспечить выполнение...

Операции над вещественными числами
Ребята! Как можно от числа, например, 1.2211 получить целую часть, то есть единицу?

Реализовать в виде модуля набор подпрограмм для работы с многочленами
Реализовать в виде модуля набор подпрограмм для работы с многочленами от одной переменной (1й...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­­­­­­­­­­­­­х­р­о­н­­н­­­ы­­й счётчик с управляющим сигналом зад
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru