Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2011, 23:45   #1
Аким Ба
 
Регистрация: 09.08.2011
Сообщений: 7
По умолчанию Работа с комплексными числами

Unit ch;
interface
type
compl=Object
r,m:real;
st:string;
function Dei(stre:string):real;
function Mni(stim:string):real;
end;
implementation
Function compl.Dei(stre:string):real;
var re:string;
cr:integer;
begin
st:=stre;
if pos('+',st)>1 then
begin
re:=copy(st,1,pos('+',st)-1);
val(re,r,cr);
dei:=r;
end;
if pos('-',st)>1 then
begin
re:=copy(st,1,pos('-',st)-1);
val(re,r,cr);
dei:=r;
end;
if pos('-',st)=1 or pos('+',st) then
begin
delete(st,1,1);
re:=copy(st,1,pos('-',st)-1);
val(re,r,cr);
dei:=r*(-1);
end;
if pos('-',st)=1 or pos('+',st) then
begin
delete(st,1,1);
re:=copy(st,1,pos('+',st)-1);
val(re,r,cr);
dei:=r*(-1);
end;
end;
function compl.Mni(stim:string):real;
var im:string;
cm:integer;
begin
st:=stim;
if pos('+',st)>1 then
begin
im:=copy(st,pos('+',st)+1,(pos('i', st)-pos('+',st))-1);
val(im,m,cm);
Mni:=m;
end;
if pos('-',st)>1 then
begin
im:=copy(st,pos('-',st)+1,(pos('i',st)-pos('-',st))-1);
val(im,m,cm);
Mni:=m;
end;
if pos('+',st)=1 then
begin
delete(st,1,1);
im:=copy(st,pos('+',st)+1,(pos('i', st)-pos('+',st))-1);
val(im,m,cm);
Mni:=m;
end;
if pos('+',st)=1 then
begin
delete(st,1,1);
im:=copy(st,pos('-',st)+1,(pos('i',st)-pos('-',st))-1);
val(im,m,cm);
Mni:=m;
end;
if pos('-',st)=1 then
begin
delete(st,1,1);
im:=copy(st,pos('+',st)+1,(pos('i', st)-pos('+',st))-1);
val(im,m,cm);
Mni:=m;
end;
if pos('-',st)=1 then
begin
delete(st,1,1);
im:=copy(st,pos('+',st)+1,(pos('i', st)-pos('+',st))-1);
val(im,m,cm);
Mni:=m;
end;
end;
end.

Program ggg;
uses ch;
var f:compl;
stt:string;
sh:integer;
begin
writeln('vvedite konpleksnoe chislo');
readln(stt);
writeln('viberite deistvie');
writeln(' 1-vivesti deistvitelnuu chast');
writeln(' 2-vivesti mnimuu chast');
readln(sh);
if sh=1 then
writeln(f.dei(stt):5:2);
if sh=2 then
writeln(f.Mni(stt):5:2);
readln;
end.

Здравствуйте!
Дан объект. В нем дана строка, в которую записывается комплексное число. Нужно вывести на экран вещественную и мнимую часть числа! Нужно рассмотреть два варианта, когда перед перед вещественной частью есть знак + или -( например -8-8i) и когда его нет (8+8i)! Следовательно будет 6 вариантов!
Проблема:При выводе вещественной не работает случай +8+8i (когда два +), при выводе мнимой части не работает совсем ничего...
Помогите пожалуйста! Что именно я делаю не правильно?? И как лучше сделать?
Аким Ба вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с числами на C++ Сержuk Помощь студентам 10 21.09.2011 03:29
Программа вычисления нулей функции с комплексными числами! denismax Фриланс 3 04.04.2011 11:33
Работа с комплексными числами в Excel (VBA макрос) bdfy Microsoft Office Excel 4 06.03.2011 23:14
тригонометрические действия над комплексными числами шурег Общие вопросы Delphi 2 26.12.2010 21:31
Проблема с комплексными числами -=aHTPoПоС=- Помощь студентам 3 08.12.2009 21:02