Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.17;
Скачать: CL | DM;

Вниз

Задача на массивы   Найти похожие ветки 

 
Shell   (2006-11-22 19:16) [0]

Здравствуйте, подскажите пожалуйста как решить вот такую задачу:
Многочлен степени N задан своими коэффициентами an, an-1,  an-2, …, a2, a1, a0 (коэффициент ai стоит при x в степени i):
Вот формула многочлена: P{x}=AnXn+An-1Xn-1+...+A2X2+AX+A(Xn-степень, An-номер многочлена)
Помогите написать программу для вычисления P(x): число N, все коэффициенты и x вводятся с клавиатуры, N <= 20. Коэффициенты и x - вещественные числа.

Зарание благодарен Вам за помошь.


 
Рамиль ©   (2006-11-22 19:40) [1]

А в чем, собственно, проблема?
Проходишь по циклу в массив и считаешь.


 
Shell   (2006-11-22 19:51) [2]

Я не много не догоняю как это сделать.Просто эту тему в школе мы начали проходить только сегодня.


 
Джо ©   (2006-11-22 19:57) [3]

> [2] Shell   (22.11.06 19:51)
> Просто эту тему в
> школе мы начали проходить только сегодня.

И что, уже сразу задание задали?


 
Shell   (2006-11-22 19:59) [4]

Да


 
ProgRAMmer Dimonych ©   (2006-11-22 20:00) [5]

Что вообще проходите? Turbo Pascal?


 
Алхимик ©   (2006-11-22 20:04) [6]

Попробуй "на пальцах" объяснить как ты видишь решение задачи, с переводом на паскакаль поможем. :)
p.s. А вы говорите у студентов обострение... Школа атакует! :)


 
ProgRAMmer Dimonych ©   (2006-11-22 20:17) [7]

> Алхимик ©   (22.11.06 20:04) [6]

Школа атаковала всегда, т.к. нормальных учебников по инфе ещё не написано...


 
Lazy_Coder   (2006-11-22 21:45) [8]

На CBuilder5 это будет выгдядеть так:
#include <vector.h>
#include <stdio.h>
#include <conio.h>
#include <vcl.h>
#include <math.h>
...
bool flag=false;
cout << "Vasya Pupkin SOFTWARE presents : *Calculator*\r\n";
AnsiString buf;
float fbuf;
vector <float> coef;
vector <float> eks;
coef.clear();
eks.clear();
int i=0;
while(!flag)
{
cout << "Коэффициент при "+IntToStr(i)+"-й степени >";
cin >> buf;
if(buf=="")flag=true; //Пустая строка - конец ввода
else
 {
 try
  {
  fbuf=StrToFloat(buf);
  coef.push_back(fbuf);
  i++;
  }
 catch(...)
  {
  cout << "Ошибка ввода!\n";
  }
 }
}
for(int i=0;i<coef.size();i+=0)  //Пока всё не введеш
{
cout << "x в "+IntToStr(i)+"-й степени >";
cin >>buf;
try
 {
 fbuf=StrToFloat(fbuf);
 eks.push_back(fbuf);
 i++;
 }
catch(...)
 {
 cout << "Internal Error #34523456134";
 }  
}
// Вычисления
float p=0;
float x,a;
for(int i=0;i<coef.size();i++)
{
x=eks[i];
a=coef[i];
p+=pow(eks,i)*a;
}
cout << "\n";
cout << "Значение многочлена >"+FloatToStrF(p,ffGeneral,12,12);
cin >> buf;

P.S. В трубопаскакаль сами переводите...

Блин, чё я такой пьяный сегодня?


 
Джо ©   (2006-11-22 21:53) [9]

> Блин, чё я такой пьяный сегодня?

Когда трезвый — на Делфи пишешь? ;)


 
Lazy_Coder   (2006-11-22 21:59) [10]

Удалено модератором
Примечание: офтопик


 
palva ©   (2006-11-23 00:08) [11]

> Школа атаковала всегда, т.к. нормальных учебников по инфе ещё не написано...

Как это не написано!?
Курош. Курс высшей алгебры.
Написан лет 40 назад. Доступен десятикласснику. Открыть главу про многочлены и прочитать, что такое схема Горнера. Или поискать в интернете этого Горнера.


 
ProgRAMmer Dimonych ©   (2006-11-23 00:11) [12]

> palva ©   (23.11.06 00:08) [11]
Инфа одним Горнером не ограничивается. Я вообще предпочитаю не занижать информатику до уровня математики.


 
Anatoly Podgoretsky ©   (2006-11-23 00:17) [13]

> palva  (23.11.2006 0:08:11)  [11]

Про многочлены говоришь, тогда тебе в другую ветку :-)


 
Думкин ©   (2006-11-23 06:20) [14]


> ProgRAMmer Dimonych ©   (23.11.06 00:11) [12]

Вы хотели сказать "не возвышать". Не оговаривайтесь так больше.

> palva ©   (23.11.06 00:08) [11]

Причем тут Горнер? Горнер тут совсем ни при чем.

> Shell   (22.11.06 19:16)  

Раз проходили, значит это ДЗ. Делай его сам или приставай к учителю.


 
Думкин ©   (2006-11-23 06:23) [15]


> > palva ©   (23.11.06 00:08) [11]

Извиняюсь, поспешил. Горнер причем. Спутался. :)


 
palva ©   (2006-11-23 10:24) [16]

Думкин ©   (23.11.06 06:23) [15]

Если f делить на (x - a) то остаток и будет равен искомому f(a).

Деление многочленов столбиком, кстати, проходят в школах (возможно, некоторых?). В нашей сельской школе мы проходили. Правда было это давненько.


 
Думкин ©   (2006-11-23 11:07) [17]


> palva ©   (23.11.06 10:24) [16]

Я же написал, что согласен. К чему ваш пост? То что вы описали, называется теорема Безу.


 
Думкин ©   (2006-11-23 11:09) [18]

Но возник вопрос - как связана схема Горнера и теорема Безу?


 
Думкин ©   (2006-11-23 11:18) [19]


> palva ©   (23.11.06 10:24) [16]

Поискал про схему. Я немного иное имел в виду - вычислительную схему Горнера, она как раз коррелирует с сабжем. при чем полностью.

Как же соотносятся  с сабжем ваши слова - не понимаю.


 
Lazy_Coder   (2006-11-23 11:27) [20]

На трезвую голову посмотрел, а ведь в программе ошибка. Икс то один на всех !

Таким образом, прога в Паскале будет выглядеть так:
program polynome;
uses crt;
var i,num:integer;
var p,x,an:real;
var a:array of real[1..21];
begin
clrscr;
write("Type maximun power(less or equal 20):");
readln(num);
writeln("Please enter coefficients");
for i:=1 to num+1 do
begin
write("Power :",i-1," >");
readln(an);
a[i]:=an;
end;
write("Type x:");
readln(x);
p:=0
for i:=1 to num+1 do
begin
an=a[i];
p:=p+an*x^(i-1);
end;
writeln("Result:",p);
repeat until keypressed;
end.

Я мог где- нибудь ошибиться, но в целом прога должна работать.


 
Shell   (2006-11-23 12:10) [21]

Спасибо за алгоритм, но вот маленькая проблема Паскаль не знает знак степени  "^"
p:=p+an*x^(i-1);
Как это исправить?


 
isasa ©   (2006-11-23 12:19) [22]

^ - это от Бейсика. :)
uses math;
...
power (...)


 
Shell   (2006-11-23 12:38) [23]

В паскале нет math;
Можно ли обойтись без него?


 
Anatoly Podgoretsky ©   (2006-11-23 12:42) [24]

Можно, через логорифмы. Спроси у учителя.


 
Jeer ©   (2006-11-23 12:52) [25]


> Shell   (23.11.06 12:10) [21]


x^2 == x*x
x^3 == x*x*x
...


 
Lazy_Coder   (2006-11-23 13:21) [26]

В степень можно возвести так:
x^n=exp(n*ln(x));
exp - экспонента
ln - натуральный логарифм
по - моему в они доступны по-умолчанию, если нет - можно нажать <Ctrl+F1>, при этом выделить слово - в справке указан модуль.
Можно и так:
function power(var x:real,var a:integer):real
var ret:real;
begin
ret:=1;
for i:=1 to a do ret:=ret*x;
power:=ret; {Не помню точно, как идет возврат значения... По-моему, так.}
end;

Потом в проге вызываешь
a=x^n как a=power(x,n);

Люди, а как насчёт моего вопроса(про DataSet)? Мне всё ещё интересно узнать ваше мнение.


 
Anatoly Podgoretsky ©   (2006-11-23 13:26) [27]


> Люди, а как насчёт моего вопроса(про DataSet)? Мне всё ещё
> интересно узнать ваше мнение.

А ссылку привести религия не позволяет.


 
Lazy_Coder   (2006-11-23 15:23) [28]


> > Люди, а как насчёт моего вопроса(про DataSet)? Мне всё
> ещё
> > интересно узнать ваше мнение.
>
> А ссылку привести религия не позволяет


А что же так резко-то?
Есть ведь вещи, которые для наших "религий" общие, VCL например.
И Midas, кстати, тоже. Ещё не известно, какая "религия" , была раньше (т.е. на чём вышеуказанные библиотеки написаны.). А может, Delphi -это секта :-)
Кстати, раньше я программировал только на Delphi(Ну, ещё на Basic,Fortan,Asm)- пока не стал изучать С/C++.


 
Lazy_Coder   (2006-11-23 19:18) [29]

Да-а... Зря только время потратил, мастера млин.
Не знаете сами, так и говорите сразу.


 
Shell   (2006-11-24 17:28) [30]

Пожалуйста люди помогите, код не работает а именно не могу возвести в степень


 
Shell   (2006-11-24 17:28) [31]

Пожалуйста люди помогите, код не работает а именно не могу возвести в степень


 
Virgo_Style ©   (2006-11-24 17:52) [32]

Shell   (24.11.06 17:28) [31]
код не работает


какой?


 
TUser ©   (2006-11-24 19:13) [33]

Алгоритм кого-то есть для этого.

result := An;
for i := n-1 downto 0 do
 result *= X
 result += Ai


 
Shell   (2006-11-26 12:27) [34]

TUser ©
Можно чуть по подробнее а то я не могу понять.
Если можно то покажите пример


 
Shell   (2006-11-26 12:29) [35]

TUser ©
Можно чуть по подробнее а то я не могу понять.
Если можно то покажите пример,а то очень нужно сделать программу.


 
Anatoly Podgoretsky ©   (2006-11-26 12:35) [36]

> Shell  (26.11.2006 12:29:35)  [35]

Это и есть пример, две последнии строчки перевести в Паскалевскую форму.


 
Shell   (2006-11-26 12:50) [37]

result *= X
result += Ai
Я что то не пойму что значат знак + и *
И как это работает


 
Anatoly Podgoretsky ©   (2006-11-26 16:55) [38]

> Shell  (26.11.2006 12:50:37)  [37]

Это си, первое умножение, а второе сложение.


 
ShellX   (2006-11-26 17:58) [39]

Я всё таки не могу понятькак правильно будет выглядит прога, пожалуйста мастера помогите, мне очень нужна эта программа.Задание нужно сдать к среде, времени мало, пожалуйста помогите!


 
Palladin ©   (2006-11-26 18:36) [40]

:) Умри достойно, как мужчина!



Страницы: 1 2 вся ветка

Текущий архив: 2006.12.17;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.031 c
3-1160143985
menart
2006-10-06 18:13
2006.12.17
Полнотекстовый поиск MS SQL SErver 2000


2-1164995847
Nastikk
2006-12-01 20:57
2006.12.17
Создание записей на Делфи


15-1164283122
TUser
2006-11-23 14:58
2006.12.17
Почтовый клиент


2-1164831090
redlord
2006-11-29 23:11
2006.12.17
мигание компонентов на панели


15-1164645188
syte_ser78
2006-11-27 19:33
2006.12.17
сервис регистрации ошибочных урлов