13.08.2013 Views

?????????????? ?????? ? ????????? ?????????? ??????? ?????

?????????????? ?????? ? ????????? ?????????? ??????? ?????

?????????????? ?????? ? ????????? ?????????? ??????? ?????

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

program kontur<br />

!******* 1. Объявление внутренних массивов схемы *****<br />

integer, parameter:: nv=400 ! максимальное число ветвей<br />

character (len = 4 ) namv(nv),name0 ! имена ветвей<br />

integer np1(nv),np2(nv) ! номера начала и конца ветвей<br />

character (len=8) symnp1(nv),symnp2(nv), nameyz ! имена нач. и кон. узлов<br />

integer yzpar,kp,kv ! число узловых пар, узлов и ветвей<br />

real ev(nv), jv(nv), zv(nv,nv) ! параметры ветвей<br />

real er(nv), jr(nv), zr(nv,nv) ! параметры схемы<br />

real Yr(nv,nv), Uv(nv), Iv(nv) ! узловые сопр. токи и напр. ветвей<br />

real Csoed(nv,nv),Asoed(nv,nv) ! матрицы соединений<br />

!*******объявления для транслятора****<br />

character (len = 20) words(7*nv) ! Массив слов текста<br />

character (len = 80) st,namefile ! Строка текста<br />

character (len = 20) name1 ! текст для числа<br />

integer wbegin, wend, neww, lst<br />

!объявления для интерфейса<br />

character(len=80)::CFIL1=' '<br />

character(len=50)::help='программа расчета R-цепи'<br />

integer, parameter :: units = 1 ! Номер устройства для файла<br />

!****** 2. Создание интерфейса пользователя ******<br />

ipovtor=1 ! флаг повторения расчета<br />

osnov: do while (ipovtor==1)<br />

kv=0 ! текущая ветвь<br />

zv=0;ev=0;jv=0;np1=0;np2=0;Csoed=0;Asoed=0 ! обнуление массивов<br />

er=0;jr=0;zr=0;Yr=0;Uv=0;Iv=0<br />

call swgopt('center','position')<br />

CALL SWGHLP (help)<br />

CALL SWGWTH (-30)<br />

CALL WGINI ('vert', IP)<br />

call wgcmd (IP, 'открыть блокнот','polyglot.exe',ID) ! запуск текстового редактора<br />

CALL WGLAB (IP, 'файл с данными:', ID)<br />

CALL WGFIL (IP, 'открыть файл', CFIL1, '*.cir', ID_FIL1)<br />

CALL WGOK (IP, ID_OK); CALL WGQUIT (IP, ID_Q)<br />

CALL WGFIN<br />

call GWGFIL(ID_FIL1,CFIL1)<br />

!****** 3. Ввод строки из входного файла, выделение слов в строке ******<br />

CALL CPU_TIME (rt1)<br />

! Запишем все слова строки в массив words<br />

open(units,file=trim(CFIL1))<br />

do while ( 1==1) ! Цикл обработки строк<br />

neww = 0 ! neww - число слов в строке<br />

read(units,'(a)',end=10,iostat=ios)st ! Ввод строки текста<br />

write(*, *) st ! Контрольный вывод<br />

st=adjustl(st) ! левое выравнивание<br />

if (index(st,'*')==1) cycle ! чтобы игнорировать строку начин. с "*"<br />

if (st(1:4)=='.end') exit<br />

lst = len_trim(st) ! Длина строки без хвостовых пробелов<br />

k=index(st,';') ! чтобы игнорировать часть строки начин. с ";"<br />

if (k==1) cycle<br />

if (k>=1) lst = len_trim(st(1:k-1))<br />

if (index(st(1:1),'.')/=0) cycle<br />

wbegin = 0 ! wbegin - начало текущего слова в строке<br />

do j = 1, lst ! Просмотр всех символов строки<br />

if (st(j:j) == ' ') then<br />

if (wbegin > 0) call addword( words, st, wbegin, wend, neww )<br />

88

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!