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

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

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

 
 Ответить  Открыть новую тему 
> Помогите доделать задачку : комплексные числа, реализовать в модуле
сообщение
Сообщение #1


Пионер
**

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

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


Задача: Дан массив комплексных чисел A[M], Получить массив B[N,M], каждая строка которого получается возведением в степень, равную номеру этой строки в массиве А.
~~~
Реализовать в виде модуля набор подпрограмм для выполнения следующих операция над комплексными числами:
* сложения
* вычитания
* умножения
* деления
* вычисления модуля комплексного числа
* возведения комплексного числа в степень n
* комплексное число предоставить следующим типом:
type complex = record
re : real;
im : real;
end;

используя этот модуля решить данную задачу.

у меня есть(нарыл поиском тут wink.gif ) :
 
Unit m_1369;

interface

uses crt;

type
complex = record
re, im: real
end;

var
Eps: real;
z, res:Complex;

implementation

{Функция для определения модуля комплексного числа}
function AbsComplex(z: Complex): real;
begin
AbsComplex := sqrt(sqr(z.re) + sqr(z. im))
end;

{Процедура сложения двух комплексных чисел}
procedure AddComplex(z1,z2: Complex; var res:Complex);
begin
res.re := z1.re + z2.re;
res.im := z1.im + z2.im;
end;

{процедура умножения двух комплексных чисел}
procedure Multicomplex(z1,z2: Complex; var res:Complex);
begin
res.re := z1.re * z2.re - z1.im * z2.im;
res.im := z1.re * z2.im - z1.im * z2.re
end;
{Процедура деления комплексного числа на вещественное}
procedure MultCoplToReal(var z:Complex; c:real);
begin
z.re := z.re * c;
z.im := z.im * c
end;

end.



как быть? mega_chok.gif

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


--------------------
Каждый человек , которого я знаю встречаю, превосходит меня в какой нить области, и я готов у него этому учится:)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Димас, ну у тебя же есть практически весь модуль... Сложение/умножение ты нашел сам, вычитание/деление есть тут: Записи

Возведение в степень можно представить как последовательное умножение (n раз) двух одинаковых комплексных чисел (сначала одно на другое, а потом - на результат предыдущей операции)...

А вот с заданием понятно далеко не все: откуда, например, берется N в задании... Ну, есть у нас массив из M чисел, как отсюда получить матрицу NxM?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Perl. Just code it!
******

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

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


Димас Ты же не первый раз на форуме, переименуй тему, иначе она будет закрыта в течении часа.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

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

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


Цитата
А вот с заданием понятно далеко не все: откуда, например, берется N в задании... Ну, есть у нас массив из M чисел, как отсюда получить матрицу NxM?


типа вот так:
(но я єто не могу реализовать в модуле mega_chok.gif )
 

var i,j:integer;
m,n:integer;
a:array[1..20,1..2] of integer;
b:array[1..20,1..10,1..2] of integer;
Begin

randomize;
clrscr;
write('Kollichestvo kompleksnih chisel : ');
readln(m);
write('Stepen : ');
readln(n);

for i:=1 to m do
begin
a[i,1]:=random(9)+1;
a[i,2]:=random(9)+1;
end;

writeln;
writeln('Masiv A :');
writeln;

for i:=1 to m do
begin
write(a[i,1],'j');
if a[i,2]>=0 then write('+');
writeln(a[i,2]);
end;

readln;
for i:=1 to m do
begin
b[i,1,1]:=a[i,1];
b[i,1,2]:=a[i,2];
end;

for i:=1 to m do
for j:=2 to n do
begin
b[i,j,1]:=b[i,1,1]*b[i,j-1,2]+b[i,j-1,1]*b[i,1,2];
b[i,j,2]:=b[i,1,1]*b[i,j-1,1]*(-1)+b[i,1,2]*b[i,j-1,2]
end;
writeln;

clrscr;
writeln('Masiv B :');
writeln;
textcolor(8);

for i:=1 to m do
begin
for j:=1 to n do
begin
write(b[i,j,1]);
textcolor(2);
write('j');
textcolor(8);
if b[i,j,2]>=0 then write('+');
write(b[i,j,2]);
textcolor(4);
write(' <-',j,'| ');
textcolor(8);
end;
writeln;
end;
writeln;
write('Dlya vihoda nagmite knopky ...');
readln;
end;


вот wacko.gif

Добавлено через 2 мин.
Цитата(klem4 @ 10.09.2007 16:04) *

Димас Ты же не первый раз на форуме, переименуй тему, иначе она будет закрыта в течении часа.

слушаю и повинуюсь ! smile.gif
не первый и не второй где то *надцятый раз, и до сих пор не поумнел... blink.gif
--------------
Так как же єту задачу побороть? mega_chok.gif

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


--------------------
Каждый человек , которого я знаю встречаю, превосходит меня в какой нить области, и я готов у него этому учится:)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Димас, во-первых, у тебя ошибка в реализации Multicomplex: при вычислении res.im надо не минус, а плюс... Ну, а во-вторых, вот программа, делающая то же самое, что и приведенная тобой, но с использованием модуля complex.tpu (исходник модуля я прикрепил...) :

uses crt, complex;

const
max_n = 20;
max_power = 10;

var
i, j: integer;
m, n: integer;
a: array[1 .. max_n] of tcomplex;
b: array[1 .. max_n, 1 .. max_power] of tcomplex;

begin
randomize;
clrscr;

write('Kollichestvo kompleksnih chisel : '); readln(m);
write('Stepen : '); readln(n);

for i := 1 to m do
with a[i] do begin
re := random(9) + 1;
im := random(9) + 1;
end;

writeln;
writeln('Masiv A :');
writeln;

for i := 1 to m do begin
PrintComplex(a[i]); writeln;
end;

readln;
for i := 1 to m do begin
b[i, 1] := a[i];
for j := 2 to n do
PowerComplex(a[i], b[i, j], j);
end;

writeln;
clrscr;
writeln('Masiv B :');
writeln;

textcolor(lightgray);
for i :=1 to m do begin
for j :=1 to n do begin
PrintComplex(b[i, j]);
textcolor(lightred);
write(' <-',j,'| ');
textcolor(lightgray);
end;
writeln;
end;

writeln;
write('Dlya vihoda nagmite knopky ...');
readln;
end.



Прикрепленные файлы
Прикрепленный файл  complex.pas ( 1.86 килобайт ) Кол-во скачиваний: 275
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Пионер
**

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

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


Volvo
ОГО ! rolleyes.gif
не ожидал, Спасибо !!! smile.gif


--------------------
Каждый человек , которого я знаю встречаю, превосходит меня в какой нить области, и я готов у него этому учится:)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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