IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Многочлены
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Задача №670. Прикрепленное изображение
Я смог решить только пункт в) и то не уверен что правильно. Но вот как решить пункт а) и б) я понятия не имею blink.gif Подскажите пожалуйста!
var     k: byte;
        a, temp: real;
function G(k: integer; x: real): real;
begin
  if k=0 then G:=1 else if k=1 then G:=x-1 else G:=(x-2*k+1)*G(k-1,x)
  -sqr(k-1)*G(k-1,x)
end;
begin
write('Vvedite a: ');  readln(a);
temp:=0;
for k:=0 to 6 do
temp:=temp+G(k,a);
write('Rezultat = ', temp:10:3);
readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
смог решить только пункт в) и то не уверен что правильно.
В принципе, можно и так, но тогда ты будешь делать двойную работу...

Путь решения - подобен тому, что я показывал здесь: Многочлен Чебышева (только придется подкорректировать для твоих полиномов). А уж как найдешь полином - то будешь вычислять его.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Цитата(volvo @ 27.05.2009 21:50) *

В принципе, можно и так, но тогда ты будешь делать двойную работу...

Просто мне так понятней! Насчет многочлена Чебышева- препод точно не поверит, что это я сам сделал...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Почему?что такого сложного в теореме Чебишова?Или он не поверит,что ты ее смог реализовать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата
Насчет многочлена Чебышева- препод точно не поверит, что это я сам сделал...
Я ж не предлагаю тебе просто взять и скопировать решение, правда? Посмотри, что делается, как делается, если что совсем непонятно - спрашивай, поможем разобраться... А когда разберешься - с легкостью запрограммируешь сам эту задачу...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Вот именно не поверит. Если честно, то про многочлены Чебышева я слышу впервые (Чебышев для меня жестко привязан к интегралам)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Ну вот что ты к фамилии прицепился? smile.gif Давай, я назову те многочлены "Многочленами X", тебе от этого станет проще разбираться? Какая разница, как называется полином. Он просто очень похож на твой, и метод решения совпадает... Ну, не хочешь разбираться с тем, что есть - как хочешь, пиши свои велосипеды, только проверяй, чтоб они не были с квадратными колесами, и ездили правильно.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Цитата(volvo @ 27.05.2009 22:32) *

Ну, не хочешь разбираться с тем, что есть...

В 2 часа ночи голова уже не варит... unsure.gif Утром начну разбирть, ну вот тогда и начнутся вопросы!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


volvo, спасибо тебе большое! зачет сдал good.gif Но все- таки у меня один вопрос возник: в процедуре вывода что делает вот эта строка-
write(sign[coeffs[i] > 0])
?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Там выше описана константа:
const
  sign: array[boolean] of string[3] =
    (' - ', ' + ');
, чтобы не плодить лишние if coeffs[i] > 0 then ... else ..., я делаю все одним оператором: если коэффициент > 0, значит, (coeffs[i] > 0) равно true, и напечатается "+". Иначе логическое значение будет равно false, и напечатается первый элемент sign, то есть "минус"...

Добавлено через 1 мин.
Цитата
зачет сдал
Ну, сдал-то сдал, это хорошо... А разобрался, что там происходит, и как это делается (кроме твоего вопроса о выводе)?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


P.S. Оригинально однако, надо этот "трюк" запомнить. cool.gif
но возникли еще два вопроса: почему если true напечатается '+', а не первый элемент '-'?

sign: array[boolean] of string[3] =  (' - ', ' + ');

а нельзя сдесь взять string[2]?

Сообщение отредактировано: savik -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Цитата
почему если true напечатается '+', а не первый элемент '-'?
Так... Значит, с системой типов Паскаля не знаком smile.gif

Что значит описание:
array[boolean] of string[3]
?
Это эквивалент вот такого описания:
array[low(boolean) .. high(boolean)] of string[3]
, а поскольку Low(boolean) - оно же минимальное значение Логического типа = False, а максимальное значение = True (ведь False < True, правда?), то первоначальное описания массива Sign означает:
sign: array[False .. True] of string[3] = (' - ', ' + ');
, где элементу с индексом False присвоено значение ' - ', а элементу с индексом True - значение ' + '. Вот и все, собственно.

Цитата
а нельзя сдесь взять string[2]?
Во-первых - нет, там знак с двух сторон окружен пробелами, а это уже 3 символа. А во-вторых, с чего вообще менять, опять экономия что-ли? Не на том экономим, этот байт/два ничего не решают.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Я тебя достал наверное своими вопросами... но еще один остался.
Теперь по процедуре mult_2x:
move(cf[0], res[1], pred(maxOrder)*sizeof(integer));

здесь я не понял стороку pred(maxOrder)*sizeof(integer).
Если не ошибаюсь то sizeof(integer) возвращает размер типа в байтах.
А вот дальше не очень ясно.

Сообщение отредактировано: savik -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Цель всей этой строки - перенести массив из CF в Res, но не просто так перенести, а одновременно еще сдвинуть его вправо, т.е., элементы cf[ i ] перенести в элементы Res[i+1]. А как это сделать? Можно циклом, конечно, но зачем цикл, если есть встроенная процедура Move, которая прекрасно подходит для этого. Передавать в Move надо 3 параметра: откуда брать данные, куда их переносить, и сколько (в байтах) переносить. Откуда и куда (первые 2 параметра) - все понятно, от CF[0], в Res[1]. А вот сколько? Берем Pred(max_order) = max_order - 1, это столько элементов, сколько мы в принципе можем записать начиная с Res[1], не рискуя вылететь за пределы массива. Но ведь тип CoeffType - массив Integer-ов, а Move хочет размер в байтах. Значит, число переносимых элементов домножаем на размер Integer-а.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Все, прогу теперь понял до конца. Еще раз спасибо! smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.04.2025 22:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name