Форум: "Начинающим";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];
ВнизЗадача на массивы Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.049 c