Страница 1 из 1

Паскаль. разбить программу на процедуры

Добавлено: 05 дек 2008, 00:43
sergey1975
Доброе время суток . Мне нужна помошь такого плана У меня есть программа на паскале мне нужно просто разбить ее на процедуры если кто то может мне помоч буду очень благодарен

Код: Выделить всё

Program HomeWork;

type
  Polinom=^Monom;
  Monom=record
    degree, coof: integer;
    Next:Polinom;
  end;

var
  First:Polinom;
  Info: Polinom;
  firsttry, maxdg, mindg, coofmaxdg, checkdg, dg, co:integer;

begin
  First:=nil; {Snachala First ne ukazyvaet ni na chto}
  repeat
    write('Please, enter degree and coof (0 0 for exit):');
    readln(dg, co);
    if (dg=0) and (co=0) then break; {Prekrashaem vvod, esli vvedeny nuli}
    if First=NIL then begin {esli First=NIL, to sozdaem perviy element}
      new(Info); {Sozdali element s adresom v Info}
      First:=Info; {Zapomnim ego adres}
    end else begin {Esli element ne perviy}
      New(Info^.Next); {to sozdaem element na osnove pred.}
      Info:=Info^.Next; {tekushiy element - tolko chto sozdanniy}
    end;
    Info^.degree:=dg; {Zadaem znachenie}
    Info^.coof:=co;
  until false; {Zicl beskonechen. Preryvaetsya tolko pri vvedenii nulei}
  Info^.Next:=NIL; {posledniy element nulevoi}
  Info:=First; {Ukazyvaem na perviy element posledovatelnosti}
  Mindg:= 32767;

  While info<>NIL do begin {Ishem minimalnii koefficient}
    if (info^.degree <mindg) then begin
      mindg := info^.degree;
    end;
    Info:=Info^.Next;
  end;
  Info := First; {Vozvrashaemsya k nachalu spiska}
  checkdg:= 32767;
  Firsttry:=1;

  repeat
    maxdg:= -32768;
    Coofmaxdg:= 0;
    Info:= First;
    While info<>NIL do begin {Ishem maximalnii koefficient}
      if firsttry = 0 then begin
        if (info^.degree > maxdg) and (info^.degree < checkdg) then begin
          maxdg := info^.degree;
        end;
      end else begin
        if (info^.degree > maxdg) then begin
          maxdg := info^.degree;
        end;
      end;
      Info:=Info^.Next;
    end;
    Info := First; {Vozvrashaemsya k nachalu spiska}
    While info<>NIL do begin {summirue cooficienty}
      if info^.degree = maxdg then begin
        coofmaxdg := coofmaxdg + info^.coof;
      end;
      Info:=Info^.Next;
    end;
    If (coofmaxdg <> 0) and (maxdg <>0) then begin
      if (coofmaxdg>0) then begin
        write('+');
      end;
      Write(coofmaxdg, 'x^', maxdg, ' ');
    end;
    firsttry:= 0;
    If maxdg = mindg then break;
    checkdg := maxdg;
  Until false;
  readln;
end.

Re: Паскаль. разбить программу на процедуры

Добавлено: 10 дек 2008, 20:29
Хыиуду
Даже не читал :)

Код: Выделить всё

Program HomeWork;

type
  Polinom=^Monom;
  Monom=record
    degree, coof: integer;
    Next:Polinom;
  end;

var
  First:Polinom;
  Info: Polinom;
  firsttry, maxdg, mindg, coofmaxdg, checkdg, dg, co:integer;

procedure aaa;
begin
  First:=nil; {Snachala First ne ukazyvaet ni na chto}
  repeat
    write('Please, enter degree and coof (0 0 for exit):');
    readln(dg, co);
    if (dg=0) and (co=0) then break; {Prekrashaem vvod, esli vvedeny nuli}
    if First=NIL then begin {esli First=NIL, to sozdaem perviy element}
      new(Info); {Sozdali element s adresom v Info}
      First:=Info; {Zapomnim ego adres}
    end else begin {Esli element ne perviy}
      New(Info^.Next); {to sozdaem element na osnove pred.}
      Info:=Info^.Next; {tekushiy element - tolko chto sozdanniy}
    end;
    Info^.degree:=dg; {Zadaem znachenie}
    Info^.coof:=co;
  until false; {Zicl beskonechen. Preryvaetsya tolko pri vvedenii nulei}
  Info^.Next:=NIL; {posledniy element nulevoi}
  Info:=First; {Ukazyvaem na perviy element posledovatelnosti}
  Mindg:= 32767;
end;

procedure bbb;
begin
  While info<>NIL do begin {Ishem minimalnii koefficient}
    if (info^.degree <mindg) then begin
      mindg := info^.degree;
    end;
    Info:=Info^.Next;
  end;
  Info := First; {Vozvrashaemsya k nachalu spiska}
  checkdg:= 32767;
  Firsttry:=1;
end;

procedure ccc;
begin
  repeat
    maxdg:= -32768;
    Coofmaxdg:= 0;
    Info:= First;
    While info<>NIL do begin {Ishem maximalnii koefficient}
      if firsttry = 0 then begin
        if (info^.degree > maxdg) and (info^.degree < checkdg) then begin
          maxdg := info^.degree;
        end;
      end else begin
        if (info^.degree > maxdg) then begin
          maxdg := info^.degree;
        end;
      end;
      Info:=Info^.Next;
    end;
    Info := First; {Vozvrashaemsya k nachalu spiska}
    While info<>NIL do begin {summirue cooficienty}
      if info^.degree = maxdg then begin
        coofmaxdg := coofmaxdg + info^.coof;
      end;
      Info:=Info^.Next;
    end;
    If (coofmaxdg <> 0) and (maxdg <>0) then begin
      if (coofmaxdg>0) then begin
        write('+');
      end;
      Write(coofmaxdg, 'x^', maxdg, ' ');
    end;
    firsttry:= 0;
    If maxdg = mindg then break;
    checkdg := maxdg;
  Until false;
end;

begin
  aaa;
  bbb;
  ccc;
  readln;
end.