Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ функция и процедура

Автор: Armi 21.03.2007 13:54

нужна помощь срочно =) решить задачу по одномерному массиву через функцию, и задачу по двумерному массиву через процедуру. сами задачи уже решены, но вот через функцию и процедуру я решить не могу - по очень их понимаю

задача на одномерный массив: в целочисленной последовательности есть нулевые элементы. создать массив из номеров этих элементов.

Код

program massiv;
uses crt;
var
a,mas:array[1..100] of shortint;
i,n,k:byte;
begin
clrscr;
k:=0;
write ('vvedite n');
read(n);
for i:=1 to n do
  begin
  writeln('vvedite ',i,' chislo');
  read(a[i]);
   if a[i]=0 then
    begin
    k:=k+1;
    mas[k]:=i;
    end;
  end;
  for i:=1 to k do
  write(mas[i]);
end.

двумерный масив: дан массив А размером n*m. найти количество к особых элементов, считая элемент особым если он больше суммы остальных элементов его столбца.
Код

program zadacha;
uses crt;
var
max,s:integer;
i,j,k,n,m:byte;
a:array[1..100,1..100] of integer;
begin
clrscr;
max:=-32768;
k:=0;
write('vvedite n');
read(n);
write('vvedite m');
read(m);
for i:=1 to n do
  begin
  for j:=1 to m do
   begin
   write('vvedite element massiva');
   read(a[i,j]);
   end;
  end;
for j:=1 to m do
  begin
  for i:=1 to n do
   begin
   s:=s+a[i,j];
   if a[i,j]>max then
    begin
    max:=a[i,j];
    end;
   s:=s-max;
   end;
  if max>s then
   begin
   k:=k+1;
   write(max, ' ');
   max:=-32768;
   end;
  end;
writeln;
write(k);
end.

Автор: Sozialist 22.03.2007 3:17

program zadacha;
uses crt;
type
TMas=array[1..100,1..100] of integer;

procedure Task;
var
max,s:integer;
i,j,k,n,m:byte;
a:Tmas;
begin
clrscr;
max:=-32768;
k:=0;
write('vvedite n');
read(n);
write('vvedite m');
read(m);
for i:=1 to n do
begin
for j:=1 to m do
begin
write('vvedite element massiva');
read(a[i,j]);
end;
end;
for j:=1 to m do
begin
for i:=1 to n do
begin
s:=s+a[i,j];
if a[i,j]>max then
begin
max:=a[i,j];
end;
s:=s-max;
end;
if max>s then
begin
k:=k+1;
write(max, ' ');
max:=-32768;
end;
end;
writeln;
write(k);
end;{procedure Task}

BEGIN
Task;
END.


Подпрограммы можно писать для любой одной задачи, а не обязательно для задачи целиком, тем более для задачи целиком подпрограммы не нужны, но т.к. вы не указали, что именно нужно, то я обошелся таким кодом. Функция пишется почти аналогично. Уточни, что нужно. А вообще теорию читать надо wink.gif