1

Тема: Розбити програму на окремі процедури

Допоможіть, будь ласка, переробити програму, використовуючи підпрограму типу функцій

uses crt;
const n=20;
var a:array[1..n] of integer;
    i,j,k,x:integer;
begin
clrscr;
randomize;
writeln('Вихідний масив:');
for i:=1 to n do
 begin
  a[i]:=-9+random(19);
  write(a[i],' ');
 end;
writeln;
writeln;
{упорядковуємо негативні елементи}
for i:=1 to n-1 do
for j:=i+1 to n do
if(a[i]<0)and(a[j]<0)and(a[i]>a[j]) then
 begin
  x:=a[i];
  a[i]:=a[j];
  a[j]:=x;
 end;
{упорядковуємо позитивні елементи}
for i:=1 to n-1 do
for j:=i+1 to n do
if(a[i]>0)and(a[j]>0)and(a[i]>a[j]) then
 begin
  x:=a[i];
  a[i]:=a[j];
  a[j]:=x;
 end;
writeln('Упорядкування:');
for i:=1 to n do
write(a[i],' ');
writeln;
writeln;
{Перестановка негативних елементів вперед}
k:=0;
for i:=1 to n do
if a[i]<0 then
  begin
    k:=k+1;
    x:=a[i];
    for j:=i downto k+1 do
    a[j]:=a[j-1];
    a[k]:=x;
  end;
writeln('Перестановка негативних елементів вперед:');
for i:=1 to n do
write(a[i],' ');
readln
end.

2 Востаннє редагувалося Bartash (16.12.2013 22:20:47)

Re: Розбити програму на окремі процедури

Варіант халявства з наведенням коду - складової умови.

У попередній темі навіть не подякували.
Якщо проігноруєте зауваження - отримаєте попередження.confirmed

I belong to the Dead Generation.

3

Re: Розбити програму на окремі процедури

ulia_oleynik
Які функції повинні з’явитися у цій програмі?

4 Востаннє редагувалося ulia_oleynik (16.12.2013 22:03:13)

Re: Розбити програму на окремі процедури

Torbins, якби я знала...
Було завдання:
Дан масив цілих чисел а1...а20, упорядкувати всі елементи цього масиву таким чином: спочатку повинні йти всі негативні елементи, впорядковані по убуванню, потім нулі, потім позитивні числа, впорядковані по зростанню.
Я дивом зробила цю програму, а потім викладач сказав зробити це ж завдання використовуючи підпрограму типу функцій або типу процедури

5

Re: Розбити програму на окремі процедури

Скажімо так: викладач мав мати на увазі, що логіка сортування (усі оті цикли) має бути винесена в окрему procedure або function. Щось на кшалт

uses crt;
const n=20;
var a:array[1..n] of integer;
    i,j,k,x:integer;

procedure sortArray;
{тут вставляєте потрібний для сортування код}
End;

begin
clrscr;
sortArray; {calling the procedure}
for i:=1 to n do
write(a[i],' ');
readln
end.
I belong to the Dead Generation.
Подякували: ulia_oleynik, Torbins2

6

Re: Розбити програму на окремі процедури

а тут 1 процедура повинна бути чи декілька?

7

Re: Розбити програму на окремі процедури

ulia_oleynik написав:

а тут 1 процедура повинна бути чи декілька?

Залежно від того, наскільки дотошний викладач. :)

За логікою - можна так:

procedure inputArray;
for i:=1 to n do
 begin
  a[i]:=-9+random(19);
 end;
End;
procedure sortArray;
{тут - суто код, який сортує масив за вимогами задачі}
End;
procedure outputArray;
for i:=1 to n do
 begin
  write(a[i], ' ');
 end;
End;

А далі у тілі програми викликати їх по черзі (і виводити проміжні результати через write/writeln, якщо потрібно).

I belong to the Dead Generation.
Подякували: ulia_oleynik, Torbins2

8

Re: Розбити програму на окремі процедури

Безмежно дякую! Ви МегаЛюдина! Всього Вам найкращого!!!