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

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

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

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


Учиться, учиться еще раз учиться
***

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

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


Нам наш учитель вчера задал такую задачу... unsure.gif
Вводяться коэффиценты 2 многочленов и требуеться разделить их друг на друга
и вывести коэффиценты получившегося многочлена...
помогите составить кратчайший алгоритм... mega_chok.gif


--------------------
Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Новичок
*

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

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


Вот мой вариант деления многочленов столбиком.
program Vremya_09_03_07;
uses crt;
var k1,k2,k3:array[1..100] of real;
i,kol1,kol2,j,s1,s2:integer;
begin
clrscr;
repeat
write('Vvedite naivysshuu stepen` delimogo: ');
readln(kol1);
until (kol1 > 0) and (kol1 <= 100);
kol1 := kol1 + 1;
repeat
write('Vvedite naivysshuu stepen` delitelya: ');
readln(kol2);
until (kol2 >= 0) and (kol2 <= kol1);
kol2 := kol2 + 1;
writeln('Vvedite koeffichienty delimogo: ');
for i := 1 to kol1 do
read(k1[i]);
writeln('Vvedite koeffichienty delitelya: ');
for i := 1 to kol1 do
if i <= kol1-kol2 then k2[i] := 0 else read(k2[i]);

j := 0;
s1 := 0;
repeat
s2 := 1;
for i := 1 to kol1 do
if k2[i] <> 0 then break else s2 := s2 + 1;
s1 := s1 + 1;
if s2 >= s1 then
begin
j := j + 1;
k3[j] := k1[s1]/k2[s2];
for i := s1 to kol1 do
k1[i] := k1[i] - k2[s2+i-s1]*k3[j];
end;
until s2 < s1;

writeln('Koeffichienty poluchenogo mnogochlena: ');
for i := 1 to s1-1 do
write(k3[i]:4 :2,' ');
writeln;
writeln('Ostatok: ');
for i := s1 to kol1 do
write(k1[i]:4 :2,' ');
readkey;
end.

Протестировал. Вроде работает. Там только небольшой глюк в выводе остатка...
Ну типо несколько нулей написать лишних может... А так нормально.
Главное ответ верный выдаёт. Если найдёшь ошибки сообщи. wink.gif

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


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


1. Немножко не компилируется...
2. Глюки есть.
Например, если степень делителя больше степени делимого... не дает ввести все коэфф для делителя.


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


Учиться, учиться еще раз учиться
***

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

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


Цитата(Mind @ 9.03.2007 21:15) *

Вот мой вариант деления многочленов столбиком.
program Vremya_09_03_07;
uses crt;
var k1,k2,k3:array[1..100] of real;
i,kol1,kol2,j,s1,s2:integer;
begin
clrscr;
repeat
write('Vvedite naivysshuu stepen` delimogo: ');
readln(kol1);
until (kol1 > 0) and (kol1 <= 100);
kol1 := kol1 + 1;
repeat
write('Vvedite naivysshuu stepen` delitelya: ');
readln(kol2);
until (kol2 >= 0) and (kol2 <= kol1);
kol2 := kol2 + 1;
writeln('Vvedite koeffichienty delimogo: ');
for i := 1 to kol1 do
read(k1[i]);
writeln('Vvedite koeffichienty delitelya: ');
for i := 1 to kol1 do
if i <= kol1-kol2 then k2[i] := 0 else read(k2[i]);

j := 0;
s1 := 0;
repeat
s2 := 1;
for i := 1 to kol1 do
if k2[i] <> 0 then break else s2 := s2 + 1;
s1 := s1 + 1;
if s2 >= s1 then
begin
j := j + 1;
k3[j] := k1[s1]/k2[s2];
for i := s1 to kol1 do
k1[i] := k1[i] - k2[s2+i-s1]*k3[j];
end;
until s2 < s1;

writeln('Koeffichienty poluchenogo mnogochlena: ');
for i := 1 to s1-1 do
write(k3[i]4.gif2,' ');
writeln;
writeln('Ostatok: ');
for i := s1 to kol1 do
write(k1[i]4.gif2,' ');
readkey;
end.

Протестировал. Вроде работает. Там только небольшой глюк в выводе остатка...
Ну типо несколько нулей написать лишних может... А так нормально.
Главное ответ верный выдаёт. Если найдёшь ошибки сообщи. wink.gif

Bolshoe spasibo good.gif ...da qlyuk yest' no toje ispravim yes2.gif


--------------------
Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


Цитата
1. Немножко не компилируется...

Ну вообще программа может только либо компилиться, либо нет. Немножко - это реальный прикол! lol.gif Не в обиду...
Цитата
2. Глюки есть.
Например, если степень делителя больше степени делимого... не дает ввести все коэфф для делителя.
Я не рассматривал этот вариант в своей задаче.
Это каким таким образом степень делителя может быть больше степени делимого елси я поставил на это ограничение:
Код

repeat
write('Vvedite naivysshuu stepen` delitelya: ');
readln(kol2);
until (kol2 >= 0) and [b](kol2 <= kol1) [/b];

Вот то что жирным посмотри.

З.Ы. Чё в коде жирным выделять нельзя что ли? Я вот имел ввиду вот это: kol2 <= kol1

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


Учиться, учиться еще раз учиться
***

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

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


Спасибо огромное...я пожправил некоторые пробелы в проге(их было не так уж и много)... good.gif


--------------------
Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


Цитата
Спасибо огромное...я пожправил некоторые пробелы в проге(их было не так уж и много)...

Да не за что! wink.gif Мне самому было интересно эту программу сделать, чтобы проверять правильность своего деления многочленов... А какие там ещё были проблемы кроме как вывод остатка парил чуток? Просто самому интересно... smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата
чтобы проверять правильность своего деления многочленов
Для этого надо программу тестировать САМОМУ, а не давать ее как решение для того, чтобы ее тестировали другие...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


Цитата
Ну вообще программа может только либо компилиться, либо нет. Немножко - это реальный прикол!

Спасибо за пояснение. Я даже не догадывалась!
Hint: вообще-то, это цитата была.
Цитата
Это каким таким образом степень делителя может быть больше степени делимого елси я поставил на это ограничение

1. А с какой стати ты отбрасываешь этот случай? Что, правильные дроби не имеют права на существование?
2. Пользователя хоть как-то предупредить - не судьба? Откуда он должен знать, что его вариант ввода степени не прошел? Начинает вводить коэффициенты.... Программа не ругается, все принимает...

volvo, компания Майкрософт тоже так любит делать smile.gif "Ищите, пользователи, глюки... Сообщайте в суппорт... А мы сервиспаков наделаем..."

Сообщение отредактировано: мисс_граффити -


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


Новичок
*

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

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


Цитата
Для этого надо программу тестировать САМОМУ, а не давать ее как решение для того, чтобы ее тестировали другие...

Я тестировал сам! Всё работает. Я наверно имею право иногда сомневаться... wink.gif
Я просто так на всякий случай написал. Мало ли какие глюки найдутся... Никто ведь не застрахован от ошибок.
Цитата
. Пользователя хоть как-то предупредить - не судьба? Откуда он должен знать, что его вариант ввода степени не прошел? Начинает вводить коэффициенты.... Программа не ругается, все принимает...

Ну, вообще я думаю это уже оформление... Я не углублялся в оформление. Точнее говоря его там нет вообще. yes2.gif В этом плане там ещё много чё подправить можно. Он ведь алгоритм просил. Ну а уж такие мелкие погрешности можно и самому доработать.
Цитата
1. А с какой стати ты отбрасываешь этот случай? Что, правильные дроби не имеют права на существование?

Конечно правильные дроби имеют право на существование. Я просто не рассматривал этот вариант. Судя по ответу он остался доволен. А это уже более расширенный вариант этой задачи. Может этого вообще не надо было ему? (ну это я так уже просто догадываюсь)
Цитата
volvo, компания Майкрософт тоже так любит делать "Ищите, пользователи, глюки... Сообщайте в суппорт... А мы сервиспаков наделаем..."

lol.gif Ох, насмешила. А правда ведь. Но я ни такой на самом деле... Так получилось. Не убивайте меня... wink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Бывалый
***

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

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


Буду выступать в виде заключителя smile.gif (или может злоключителя) smile.gif
Вот прекрасно работающий исправлённый вариант кода Mind-a(Спасибо!):

var ar1,ar2,ar3:array[1..100] of real;
i,kol1,kol2,j,k,l:integer;

begin

write('Vvedite naivysshuyu stepen` delimogo: ');
readln(kol1);
inc(kol1);

write('Vvedite naivysshuyu stepen` delitelya: ');
readln(kol2);
inc(kol2);

writeln('Vvedite koeffichienty delimogo: ');
for i:=1 to kol1 do read(ar1);

writeln('Vvedite koeffichienty delitelya: ');
for i:=1 to kol1 do read(ar2[i]);

l:=kol1-kol2;
repeat
inc(k);
if l>=k then
begin
inc(j);
ar3[j]:=ar1[k]/ar2[l];
for i:=k to kol1 do ar1[i]:=ar1[i]-ar2[l+i-k]*ar3[j];
end;
until l<k;

writeln('Koeffichienty poluchenogo mnogochlena: ');
for i:=1 to k-1 do write(ar3[i],' ');

writeln;
writeln('Ostatok: ');
for i:=k to kol1 do write(ar1[i],' ');

end.


Цитата

P.S.:
1.[i]Конец всему делу венец

yes2.gif
2.Лучше поздно чем никогда



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


Гость






Цитата
Вот прекрасно работающий
Понимаешь, в чем дело... Если меня пытаются уверить в том, что что-то прекрасно и безошибочно работает, у меня... Как бы это сказать помягче... Почему-то возникают сомнения... Смотри:
Цитата
writeln('Vvedite koeffichienty delitelya: ');
for i:=1 to kol1 do read(ar2[i]);
То есть ты даже не соизволил ЭТО протестировать... А если вот тут
Цитата
ar3[j]:=ar1[k]/ar2[l];

в знаменателе будет 0, это что, ТОЖЕ будет считаться "безошибочной работой", или что?

Ну, и закончить хочется вопросом: Как ты думаешь, при делении
6x2 - 8x на 2x , что должно получиться в результате, и что в остатке? А теперь проверь своей программой...
 К началу страницы 
+ Ответить 

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

 





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