Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Офф-топ

Страница: 1 |

 

  Вопрос: PASCAL нарисуйте блок-схему Добавлено: 22.06.04 00:07  

Автор вопроса:  HACKER

Нарисуйте мне блок схему к этому коду

 

{$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.

 

Рисовать можно где угодно, хоть в пейнте хоть в вёрде

Зарание СПАСИБО! 

 

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 22.06.04 00:35
Хе, это рисовать часов 5... не меньше...

Ответить

Номер ответа: 2
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #2
Добавлено: 22.06.04 01:24
Извращенец :)

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: hw.t-k.ru
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: basicproduction.nm.ru/
 Профиль | | #9
Добавлено: 25.06.04 02:41
 Ну, настоящий прогаммист кроме паскаля должен знать ещё АСМ, БЕЙСИК и СИ. Наверное ещё и дедушку Фортрана.

 А прогу для составления блок-схем лучше не писать, а лучше использовать язык программирования на Блок-схемах. Сам я его не видал, но один пацанчик, который в универе на компьютерщика учится, говорил что есть такой.

Ответить

Номер ответа: 10
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #10
Добавлено: 25.06.04 05:12
Знать, конечно, не лишне, но программировать н нем - увольте.
Чаще всего встает задача перевести код с языка высокого уровня на блок-схему, так что программа все-таки полезнее.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам