?????????????? ?????? ? ????????? ?????????? ??????? ?????
?????????????? ?????? ? ????????? ?????????? ??????? ?????
?????????????? ?????? ? ????????? ?????????? ??????? ?????
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