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

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

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

> Суперпозиция многочленов
Camel_Toe
сообщение 18.10.2003 11:57
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 26

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


короче, задача такая. Даны два многочлена f(x) и g(x). Требуется найти их суперпозицию, то есть f(g(x)). Данные о каждом многочлене представлены в соотв.файлах в формате: коээфициент, степень. Если у кого есть какие мысли как это можно реализовать на паскале, просьба поделиться со мной, а то у меня лично никаких идей нет.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
Ответов(1 - 19)
___ALex___
сообщение 18.10.2003 12:49
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 282

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


что уж тут сложного-то?что именно-то непонятно?
считываешь из файла данные потом считаешь...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
___ALex___
сообщение 18.10.2003 13:20
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 282

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


это универская задача?
приведи её точную формулировку
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Camel_Toe
сообщение 18.10.2003 14:15
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 26

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


В принципе формулировка уже была приведена. Даны два многочлена: f(x) И g(x). Их значения находятся в 2 внешних файлах. Каждый файл организован по принципу: каждая нова строчка содержит два числа: первое число - это коэффициент, а второе число - степень, при которой и стоит этот самый коэффициент. Требуется найти суперпозицию этих многочленов, то есть f(g(x)). А как ее найти я не очень то и понял. Подскажите хотя бы алгоритм, а лучше кодом =)))).
Например, если f(x)=х^2+4, а многочлен g(x)=x^3+2x+4. То на экран (или в файл по описанному выше принципу) должно быть выведено: f(x^3+2x+4)=(x^3+2x+4)^2 +4, ну в смысле не так как я щас написал, а уже подсчитано, то есть с раскрыванием скобок и приведением подобных.
2____Alex_____: если ты такой мастер, то почему не поможешь ????? или задача не такая легкая smile.gif????
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
___ALex___
сообщение 18.10.2003 15:06
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 282

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


мастер тут не причём, просто не вижу сложностей...
скажи, данные как я понимаю в файлах храняться в текстовом виде?
и тип коэффициентов полиномов какой?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Camel_Toe
сообщение 18.10.2003 19:05
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 26

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


коэффициенты и степени типа integer. все хранится в файле, формат текстовый.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
___ALex___
сообщение 18.10.2003 19:13
Сообщение #7


Бывалый
***

Группа: Пользователи
Сообщений: 282

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


если всё хранится в текстовом файле, это не значит что это "всё" лежит там в текстовом формате, ну да ладно
мысли-то никаки тебя не посетили дельные насчёт задачи?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Camel_Toe
сообщение 19.10.2003 16:35
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 26

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


неа, хотя была мысль написать функцию умножения двух многочленов, но потом она отпала, тк я не понял как ее можно связать на паскале с моей задачей.
ЗЫ: кстати, помойму задачка сложная, раз никто не смог ее решить.............=)))))))), хотя жаль, мне ее скоро сдавать=))))))))))))))))))))))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
___ALex___
сообщение 19.10.2003 16:47
Сообщение #9


Бывалый
***

Группа: Пользователи
Сообщений: 282

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


сегодня(или завтра) напишу
PS просьба другим её не делать, чтоб я зря не писал
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
___ALex___
сообщение 19.10.2003 19:58
Сообщение #10


Бывалый
***

Группа: Пользователи
Сообщений: 282

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


program Polinoms;
{ обработки возможных ошибок в проге нет, пиши сам если нужно,
  как видно, прога написана таким образом, что её очень просто
  обобщить на любое число полиномов }
uses Crt;
const
 n = 2;
 MasFileNames: Array[1..n] of String = ('g.txt', 'f.txt');
var
 i: Byte;
 MasF: Array[1..n] of Text;
 S: String;
 V, ErrCode: Integer;
 R, x, Buf: Extended;
 { x > 0, если хочешь, чтобы работало и при x <= 0,
   то соответствующим образом измени код }
Begin

 ClrScr;
 Write('Введите x (x > 0): ');
 ReadLn®;
 for i := 1 to n do begin
  { подразумевается что данные в файлах хранятся в формате: строка степени,
    строка коэффициента для удобства обработки, а то бы пришлось "разбирать"
    строку на составляющие }
  Assign(MasF[i], MasFileNames[i]);
  Reset(MasF[i]);
  x := R;
  R := 0;
  while not Eof(MasF[i]) do begin
   ReadLn(MasF[i], S); { читаем степень }
   Val(S, V, ErrCode);
   Buf := Exp(V * Ln(x));
   ReadLn(MasF[i], S); { читаем коэффициент }
   Val(S, V, ErrCode);
   R := R + V * Buf;
  end;
  Close(MasF[i]);
 end;
 WriteLn('Суперпозиция равна ', R:0:5);
 repeat until KeyPressed

End.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Camel_Toe
сообщение 20.10.2003 7:53
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 26

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


спасибо за код, сёдня попробую пропустить на паскале, вечерком отпишусь.
ЗЫ: smile.gif сенкс smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
zx1024
сообщение 20.10.2003 16:07
Сообщение #12


Пионер
**

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

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


А разве это было нужно?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Camel_Toe
сообщение 20.10.2003 17:09
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 26

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


2 zx1024: ты про что ???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
zx1024
сообщение 20.10.2003 19:36
Сообщение #14


Пионер
**

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

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


Считать значение суперпозиции при некотором x.
Судя по
#3 18.10.2003 в 17:15:12
нужно найти многочлен - результат транспозиции, а не его значение.
Есть ещё вариант, что я тормознул, но его мы рассматривать, пожалуй, не будем.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
___ALex___
сообщение 20.10.2003 19:53
Сообщение #15


Бывалый
***

Группа: Пользователи
Сообщений: 282

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


скорее второй вариант
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Camel_Toe
сообщение 21.10.2003 4:06
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 26

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


да нет, ты не тормознул, надо найти как раз не значение суперпозиции, а саму суперпозицию. это между прочим у нас "обычной" лабораторной работой назывется. Вот так!!!
ЗЫ: кста, код программы работает, тока маленька не так как надо.....=))))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
___ALex___
сообщение 21.10.2003 8:02
Сообщение #17


Бывалый
***

Группа: Пользователи
Сообщений: 282

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


Camel_Toe
дальше ты уж как-нить сам
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
zx1024
сообщение 21.10.2003 10:39
Сообщение #18


Пионер
**

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

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


Camel_Toe.
А, чем тебе не понравилась процедура умножения многочленов.
Через неё напишешь возведение в степень.
+ Сложение.
И всё готово.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Camel_Toe
сообщение 21.10.2003 14:12
Сообщение #19


Новичок
*

Группа: Пользователи
Сообщений: 26

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


2 zx1024: не все так просто, как кажется. вот ты сам попробуй написать такую прогу, которая считает суперпозицию многочленов, и поймешь что там очень много мелких ньюансов, кторые сильно портят жизнь, точнее ее усложняют=))))))))))))).
ЗЫ: неужели среди участников форума все о паскале нет программистов, готовых протянуть руку помощи будущему программисту ??? Я удивлен. Тем более, я смотрел все темы ниже моей, так там такие ламерские задачи, типа максимального элемента матрицы. Получается, что легкие задачи никто не решает, а как попадается сложная задача так все попрятались. Жаль !
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
zx1024
сообщение 21.10.2003 14:42
Сообщение #20


Пионер
**

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

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


Что именно вызывает проблемы:
1) Сложение многочленов (здесь же и приведение подобных),
2) Умножение многочленов (сложение уже есть),
3) Возведение многочлена в степень (при условии, что умножение и сложение уже есть)?
Рассмотри эти вопросы по отдельности (ведь о скорости выполнения тебя спрашивать никто не будет) и проблем вообще никаких не будет, - просто вызывай соответствубщие проц-ы.
Представляй многочлен как массив. A[i] = q - при степени = i - коэффициент - q.
Если данные (многочлены) представлять сложно, - то и все становится сложным.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 20.07.2025 17:25
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"