Консультация № 173919
02.11.2009, 18:06
35.00 руб.
0 2 2
Помогите,пожал уста, с задачей.Дан массив А-комплексных чисел. Получить массив С,элементами которого будут модули сумм рядом стоящих комплексных чисел. Комплексное число представить типом: Type Complex=Record
R:real;
M:Real
end;

Обсуждение

Неизвестный
02.11.2009, 18:41
общий
это ответ
Здравствуйте, машинка.
Комплексное число состоит из действительной и мнимой части, пусть R - действительная. Тогда число будет иметь вид a[i] = R+Mi, где i=[$8730$](-1). Сумма комплексных чисел в алгебраическом смысле выражается так:
a = q+wi
b = r+mi
a+b = (q+r) + (w+m)i
Дополнительные разъяснения можно посмотреть здесь: URL >>.
Модулем комплексного числа называется длина вектора, представленного этим числом, следовательно вычисляется по формуле:
|r+mi| = [$8730$](r2+m2)
Можно посмотреть доказательство в Википедии.
В приложении - решение на основании этих формул, ввод ручной из консоли. Всё должно быть ясно из комментариев.
Удачи!

Приложение:
uses crt; {подключаем модуль для процедуры очистки экрана}
Type Complex=Record {Запись, описывающая комплексное число}
R:real; {Действительная часть}
M:Real;
end;

Var a: array [1..50] of Complex; {Массив чисел}
c: array [1..50] of Real; {Массив модулей сумм}
i, n: integer;
tmp: Complex;
begin
writeln ('N (<=50): '); {Ввод данных}
repeat
readln (n);
if (n>50) then writeln ('N > 50!');
until n<=50;
writeln ('Elements: ');
for i:=1 to n do
begin
readln (a[i].R);
readln (a[i].M);
end;
clrscr; {Очистка экрана}
for i:=1 to n do {Вывод входных данных}
writeln (a[i].R:3:5, '+', a[i].M:3:5, 'i');
for i:=1 to n-1 do {Идём по элементам}
begin
tmp.R:= a[i].R+a[i+1].R; {Считаем сумму}
tmp.M:= a[i].M+a[i+1].M;
c[i]:= sqrt (sqr (tmp.R)+sqr(tmp.M)); {Считаем модуль}
end;
writeln ('Result:'); {Выводим результат}
for i:=1 to n-1 do
writeln (c[i]:3:5);
readln;
end.
5
Спасибо Вам!
Неизвестный
02.11.2009, 18:59
общий
это ответ
Здравствуйте, машинка.

Сумма двух комплексных чисел x и y равна сумме их вещественных частей и сумме их мнимых частей.
Модуль комплексного числа равен квадратному корню из суммы квадратов его вещественной и мнимой части.

Код см. в приложении.


Приложение:
uses crt;

const N=11; { Размер массива а}

type complex=record
r:real;
m:real;
end;


function modul_of_sum(x,y: complex): real;
var z: complex; {Временная переменная для хранения значения суммы двух комплексных чисел}
begin
z.r:=x.r+y.r; {Вычисляем сумму}
z.m:=x.m+y.m; {двух комплексных чисел}
modul_of_sum:=sqrt(sqr(z.r)+sqr(z.m)) {Вычисляем модуль суммы}
end;

var i:byte;
a: array[1..N] of complex; {Массив исходных чисел}
c: array[1..N-1] of real; {Массив модулей - на единицу меньше, чем массив исходных}
begin
clrscr;
randomize;
for i:=1 to N do
begin
a[i].r:=random(1000)/100.0; {Заполняем исходный массив }
a[i].m:=random(1000)/100.0;{"случайными значениями}
writeln(a[i].r:5:2,a[i].m:5:2); {и выводим на печать для контроля}
end;
writeln;
for i:=1 to N-1 do
begin
c[i]:=modul_of_sum(a[i],a[i+1]); {Вычисляем значения элементов результирующего массива}
writeln(c[i]:6:3); {и выводим их на печать}
end;
readkey;
end.
5
Спасибо Вам огромное!
Форма ответа