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

Ответить
sergey1975
Сообщения: 2
Зарегистрирован: 05 дек 2008, 00:26

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

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

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.
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Даже не читал :)

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

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.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить