Страница: 1 |
Нарисуйте мне блок схему к этому коду {$r+} const maxterm=20; maxcon=10; maxdis=10; type st5=string[5]; st10=string[10]; st20=string[20]; con=record qc: byte; con: array [1..maxcon] of st10; end; dis=record qd: byte; dis: array [1..maxdis] of con; end; TermType= array [1..MaxTerm] of Dis; var i,j,k,l,m, sqty, qstat, n, qdig, msk: byte; s, s1: string; t, t1: text; i1: integer; terms, terms1: TermType; fl, erf: boolean; setb: set of byte; procedure trc(var s: string); var i: byte; begin i:=1; while i<=length(s) do if s[i]=' ' then delete(s, i, 1) else inc(i); for i:=1 to length(s) do s[i]:=upcase(s[i]); for i:=1 to length(s) do if s[i]='-' then s[i]:='^'; for i:=1 to length(s) do if s[i]='V' then s[i]:='|'; end; function getstr(var t: TermType; i: byte; test: boolean): string; var j,k: byte; s: string; begin s:=''; for j:=1 to t[i].qd do begin for k:=1 to t[i].dis[j].qc do if test then s:=s+t[i].dis[j].con[k]+'<*>' else s:=s+t[i].dis[j].con[k]+'*'; dec(s[0], 1+2*ord(test)); if test then s:=s+'<|>' else s:=s+' | '; end; dec(s[0], 3); getstr:=s; end; begin if paramcount<>2 then begin writeln('* NC * 30-Nov-93 Boolean Functions Minimizier'); writeln('Usage: Mini <InFile> <OutFile>'); halt(2); end; assign(t, paramstr(1)); reset(t); erf:=false; n:=0; qstat:=0; fl:=true; while not eof(t) and not erf do begin inc(n); readln(t, s); trc(s); fl:=s>''; if fl then begin inc(qstat); terms[qstat].qd:=0; while s>'' do begin inc(terms[qstat].qd); terms[qstat].dis[terms[qstat].qd].qc:=0; while (s>'') and fl do begin i:=pos('*', s); j:=pos('|', s); if ((i<j) and (i>0)) or (j=0) then l:=i else begin l:=j; fl:=false; end; inc(terms[qstat].dis[terms[qstat].qd].qc); k:=terms[qstat].dis[terms[qstat].qd].qc; if l>0 then begin s1:=copy(s, 1, l-1); delete(s, 1, l); end else begin s1:=s; s:=''; end; terms[qstat].dis[terms[qstat].qd].con[k]:=s1; end; fl:=true; end; end; end; close(t); if erf then halt(2); terms1:=terms; for i:=1 to qstat do {Sorting} for j:=1 to terms[i].qd do for k:=1 to terms[i].dis[j].qc-1 do for l:=k+1 to terms[i].dis[j].qc do if terms[i].dis[j].con[l]<terms[i].dis[j].con[k] then begin s:=terms[i].dis[j].con[l]; terms[i].dis[j].con[l]:=terms[i].dis[j].con[k]; terms[i].dis[j].con[k]:=s; end; for i:=1 to qstat do {Excluding of equal vars in each conjunction} for j:=1 to terms[i].qd do begin k:=1; while k<=terms[i].dis[j].qc-1 do begin l:=k+1; while l<=terms[i].dis[j].qc do if terms[i].dis[j].con[k]=terms[i].dis[j].con[l] then begin for m:=l+1 to terms[i].dis[j].qc do terms[i].dis[j].con[m-1]:=terms[i].dis[j].con[m]; dec(terms[i].dis[j].qc); end else inc(l); inc(k); end; end; for i:=1 to qstat do {Excluding of SubPart} begin j:=1; while j<=terms[i].qd-1 do begin k:=j+1; while k<=terms[i].qd do begin s:='*'; for l:=1 to terms[i].dis[j].qc do s:=s+terms[i].dis[j].con[l]+'*'; m:=0; for l:=1 to terms[i].dis[k].qc do if pos('*'+terms[i].dis[k].con[l]+'*', s)>0 then begin inc(m); delete(s, pos('*'+terms[i].dis[k].con[l]+'*', s)+1, length(terms[i].dis[k].con[l])+1); end; if (s='*') or (m=terms[i].dis[k].qc) then if s<>'*' then begin for l:=j+1 to terms[i].qd do terms[i].dis[l-1]:=terms[i].dis[l]; dec(terms[i].qd); k:=terms[i].qd+1; dec(j); end else begin for l:=k+1 to terms[i].qd do terms[i].dis[l-1]:=terms[i].dis[l]; dec(terms[i].qd); end else inc(k); end; inc(j); end; end; assign(t1, paramstr(2)); rewrite(t1); writeln(t1, 'Source:'); for i:=1 to qstat do writeln(t1, getstr(terms1, i, true)); writeln(t1); writeln(t1, 'Results:'); for i:=1 to qstat do begin s:=getstr(terms, i, false); repeat s1:=s; j:=1; while j<=terms[i].qd-1 do begin k:=j+1; while k<=terms[i].qd do begin if terms[i].dis[j].qc=terms[i].dis[k].qc then begin s:='*'; for l:=1 to terms[i].dis[j].qc do s:=s+terms[i].dis[j].con[l]+'*'; setb:=[]; m:=0; for l:=1 to terms[i].dis[k].qc do if pos('*'+terms[i].dis[k].con[l]+ '*', s)>0 then begin setb:=setb+[l]; inc(m); delete(s, pos('*'+terms[i].dis[k]. con[l]+'*', s)+1, length( terms[i].dis[k].con[l])+1); end; if terms[i].dis[j].qc-m=1 then begin l:=1; while l in setb do inc(l); s:=terms[i].dis[k].con[l]; if s[1]='^' then delete(s, 1, 1) else s:='^'+s; l:=1; while (l<=terms[i].dis[j].qc) and (s<>terms[i].dis[j].con[l]) do inc(l); if l<=terms[i].dis[j].qc then begin for m:=l+1 to terms[i].dis[j].qc do terms[i].dis[j].con[m-1]:=terms[i].dis[j].con[m]; dec(terms[i].dis[j].qc); for m:=k+1 to terms[i].qd do terms[i].dis[m-1]:=terms[i].dis[m]; dec(terms[i].qd); if terms[i].dis[j].qc=0 then for m:=j+1 to terms[i].qd do terms[i].dis[m-1]:=terms[i].dis[m]; k:=terms[i].qd; dec(j); end; end; end; inc(k); end; inc(j); end; s:=getstr(terms, i, false); until s1=s; writeln(t1, s); end; close(t1); writeln('Good Luck.'); end. Рисовать можно где угодно, хоть в пейнте хоть в вёрде Зарание СПАСИБО!
Страница: 1 |
Вопрос: PASCAL нарисуйте блок-схему
Добавлено: 22.06.04 00:07
Автор вопроса: HACKER
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 22.06.04 00:35
Хе, это рисовать часов 5... не меньше...
Номер ответа: 2
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #2
Добавлено: 22.06.04 01:24
Извращенец
Номер ответа: 3
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 22.06.04 05:12
Напиши программу, которая рисует блок-схемы... Будет, имхо, быстрее.
Номер ответа: 4
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #4
Добавлено: 22.06.04 14:16
это не мне, другу одному, он пива обещал, я паскаль незнаю, вот думал тут кто-то знает. Я бы и пивом поделился, могу по почте выслать, токо доставка за ваш счёт, ок?
2 Sharp А хорошая идея, многим школьникам и те кто в институте такая вишка бы пригодилась, токо вот мне, ну всмысле ему это надо до среды. Чуть позже я займусь и напишу шоб сама рисовала схему. А кто поможет сейчас???
2 sne Да ты что! как часов 5?! Это ты загнул, я подобный по размеру код на qbasice в школе за урок (45 мин) рисовал, ещё и время оставалось.
Номер ответа: 5
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #5
Добавлено: 22.06.04 21:18
я те сурьезно говорю, это долго не по детски!
я для прог на страничку рисовал часа по два, а тут такое...
Номер ответа: 6
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #6
Добавлено: 23.06.04 00:41
ну ты шрифт ище мельче сделай, и на страничку вместишь Я вообще про паскаль судить немогу, но исходя из твоего мнения то паскаль получается очень сложный в понимании, если для него блок-схему рисовать в 3-4 раза дольше чем для басика
Номер ответа: 7
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #7
Добавлено: 23.06.04 01:19
От паскакаля мозги программиста тупеют, и он перестает соображать. Как и все очень вредные вещи, он вызывает привыкание, в результате чего у пасквилянтов начинаются неконтролируемые галлюцинации на тему, что паскакаль - мощный, современный язык, пригодный для написания программ. Эффект затуманивания мозгов возникает очень быстро при применении паскакаля, поэтому для того, чтобы нарисовать блок-схему для текста, написанного на паскакале (программой это могут назвать только отравившиеся его ядовитыми испарениями) пасквилянт тратит порядка суток, независимо от сложности программы, ибо паскакаль уже через сутки настолько пропитывается галлюциогеном, что начинает понимать, что блок-схема любой программы - квадрат. Отравленные той же наркотой преподы обычно принимают такой ответ.
Привыкание к паскакалю происходит быстро, и пасквилянты, лишенные очередной дозы этого смертоносного языка, пытаются принимать любую гадость, хотя бы отдаленно напоминающую паскакаль, например delphi, kylix и тому подобные поделки подпольного концерна borland. Следует отметить, что паскакаль медленно разрушает психику и сознание несчастного, так, например, ему начинает казаться, что программы, сделанные под воздействием паскакаля, весят меньше и работают быстрее. Острую степень отравления паскакалем можно определить по нападкам на программистов. Отравленный паскакалем ищет программистов и начинает их ругать за неквалифицированность. Самым лучшим аргументов отравленного является "вы программируете на не-языке". После этого обычно мысли отравленного заплетаются и он засыпает.
В 19 веке люди считали, что паскакаль можно использовать как лечебное средство против баз данных - другой страшной хвори, однако позже это заблуждение было развеяно такими лекарствами, как VB, PHP, Perl, Python etc
Чего-то меня на лирику потянуло...
Номер ответа: 8
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #8
Добавлено: 23.06.04 22:19
та лано тЕМА! я даже сохранил это
Номер ответа: 9
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #9
Добавлено: 25.06.04 02:41
Ну, настоящий прогаммист кроме паскаля должен знать ещё АСМ, БЕЙСИК и СИ. Наверное ещё и дедушку Фортрана.
А прогу для составления блок-схем лучше не писать, а лучше использовать язык программирования на Блок-схемах. Сам я его не видал, но один пацанчик, который в универе на компьютерщика учится, говорил что есть такой.
Номер ответа: 10
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #10
Добавлено: 25.06.04 05:12
Знать, конечно, не лишне, но программировать н нем - увольте.
Чаще всего встает задача перевести код с языка высокого уровня на блок-схему, так что программа все-таки полезнее.