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

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

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

> Многочлены, составить многочлен (x-a1)(x-a2)(x-a3)(x-a4)(x-a5)(x-a0)
сообщение
Сообщение #1


Новичок
*

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

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


Даны числа a0 a1 a2 a3 a4 a5
Составить многочлен шестой степени (x-a0)(x-a1)(x-a2)(x-a3)(x-a4)(x-a5)

Добавлено через 1 мин.
думал много над ней.. передо мной была сложность одна.. .когда раскрываешь скобки образуются всевозможные комбинации с двумя а потом с тремя , четырьми... для комбинаций с двумя а придумал...а когда идут 3 , 4.. че то додуматься не могу... помогите пожалуйста
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

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

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


да я понял, просто пробовал различные варианты,разбирался так скажем..а код мне в принципе ясен и сама идея)) сейчас посмотрю ещё разик)

Добавлено через 11 мин.
Спасибо Большое за проделанную работу!!! Но единственное не совсем понятна эта работа со строками. Будьте добры объясните пожалуйста


for i:=n downto 0 do
if Abs(p[i])>e then begin
if p[i]<0 then s:=s+'-' else if (i<n)and not f then s:=s+'+';
if (i=0)or(Abs(Abs(p[i])-1)>e) then begin
Str(Abs(p[i]): 8: 2,t);
while t[1]=' ' do Delete(t,1,1);
while t[Length(t)]='0' do Delete(t,Length(t),1);
if t[Length(t)]='.' then Delete(t,Length(t),1);
s:=s+t
end;


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Рустам @ 22.12.2009 15:48) *
Спасибо Большое за проделанную работу!!! Но единственное не совсем понятна эта работа со строками. Будьте добры объясните пожалуйста

Вообще-то, это не совсем относится к самой задаче. Если тебе неясно или не нравится, ты можешь выводить так, как считаешь нужным. Но объяснить тоже нетрудно ))..

Собственно, почти все сложности проистекают из-за того, что ты не сказал, какие значения могут принимать ai - любые или только целые. С целыми все было бы гораздо проще. Но я сделал для действительных, причем если дробная часть равна нулю - она не выводится (как обычно люди пишут). Так что при сдаче можешь блестнуть выводом дробных значений smile.gif (только проверь сначала как следует).


// весь вывод осуществляем в строку s
for i:=n downto 0 do // выводим в обратном порядке, от больших степеней к маленьким
// нулевые члены не выводим; проверка на ноль для действительных чисел делается сравнением с маленьким числом
if Abs(p[i])>e then begin
// знак выводим отдельно
// если это самый первый член (признак f, от first), и он положительный, то знак + опускаем
// (у меня сейчас возникло подозрение, что условие i<n - лишнее. Проверь)
if p[i]<0 then s:=s+'-' else if (i<n)and not f then s:=s+'+';
// знак вывели, дальше работаем только с модулем.
if (i=0)or(Abs(Abs(p[i])-1)>e) then begin // единицу при степени х не выводим (кроме нулевой степени)
Str(Abs(p[i]): 8: 2,t); // переводим коэффициент в строку t
while t[1]=' ' do Delete(t,1,1); // если t имеет пробелы в начале - удаляем
while t[Length(t)]='0' do Delete(t,Length(t),1); // удаляем завершающие незначащие нули (после точки)
if t[Length(t)]='.' then Delete(t,Length(t),1); // если в конце стоит точка - удаляем
s:=s+t // дописываем значение к знаку
end;
// дальше идет вывод х (везде, кроме нулевой степени)
// потом вывод показателя степени (начиная со второй)
// и сброс признака f в false


Вот, вроде, и вся наука )).


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





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