Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2009, 17:17   #1
Litrian
Пользователь
 
Регистрация: 01.12.2009
Сообщений: 11
Радость Оформить процедурами и функциями

Вот сделал матрицу, теперь меня обрадовали: ее надо было сделать с помощью процедур и функций. Вот исходник:
Код:
uses crt;
const
  str=8;{количество строк}
  sto=8;{количество столбцов}
var
  a:array [1..str,1..sto] of integer;
  i,j,summ:integer;
begin
  clrscr;
  {заполняем и выыводим массив}
  writeln('Исходная матрица:');
  for i:=1 to str do
  begin
    for j:=1 to sto do
    begin
      a[i,j]:=random(8)-4;
      write(a[i,j]:2,' ')
    end;
    writeln
  end;
  {присваиваем суммы элементам побочной диагонали}
    for i:=str downto 1 do
    begin
      summ:=0;
      for j:=1 to sto do
        if j<>sto-i+1 then
          inc(summ,a[i,j]);
      for j:=1 to str do
        if j<>i then
          inc(summ,a[j,sto-i+1]);
      a[i,sto-i+1]:=summ;
    end;
  {выводим матрицу}
  writeln('Полученная матрица:');
  for i:=1 to str do
  begin
    for j:=1 to sto do
      write(a[i,j]:2,' ');
    writeln
  end;
end.
Как это сделать ума не приложу. Если знаете подскажите

Последний раз редактировалось Stilet; 01.12.2009 в 17:24.
Litrian вне форума Ответить с цитированием
Старый 01.12.2009, 17:25   #2
ManU
Пользователь Подтвердите свой е-майл
 
Аватар для ManU
 
Регистрация: 30.04.2008
Сообщений: 78
По умолчанию

Структура процедуры имеет следующий вид:

Код:
Procedure <имя процедуры>(формальные параметры : их тип);
Var
  (локальные переменные)
begin
  . . .
end;

Процедура вызывается по имени:

Код:
<имя процедуры> (фактические параметры);
Например:

Код:
Procedure express(a,b,c : real; var x,y:real);
Var
  z : real;
begin
  z:=a+ b+ c;
  x:=sqr(z);
  y:=sqrt(z);
end ;
Эту процедуру можно вызвать следующим образом:

Код:
express(7.6, 6.8, 9.5, x1, x2);

Функция
оформляется в следующем виде:
Код:
Function <имя функции>(формальные параметры: тип): тип значения функции;
Var
  . . . 
Begin
  . . .
End ;
Вызывается функция по её имени с указанием фактических параметров.

Вызов функции можно делать непосредственно внутри выражения. При вызове функции тип не указывается.

Пример. Пусть требуется найти (x!-y!)*d!.

Напомним, что х! представляет собой произведение n чисел натурального ряда :
х! = 1*2*3*......*х

Код:
Function fac(n:integer): integer;
Var
  p,i: integer;
Begin
  p:=1;
  for i:=2 to n do
    p:=p*i;
  fac:=p;
End;
Вызвать можно так:

Код:
 f:=(fac(x)-fac(y))*fac(d).

Последний раз редактировалось ManU; 01.12.2009 в 17:27.
ManU вне форума Ответить с цитированием
Старый 01.12.2009, 17:29   #3
Litrian
Пользователь
 
Регистрация: 01.12.2009
Сообщений: 11
По умолчанию

А когда надо применять функцию, а когда процедуру. И там вроде их большое количество.
Litrian вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с процедурами и функциями. Tanushka5606 Паскаль, Turbo Pascal, PascalABC.NET 2 06.05.2009 23:01
Помогите разобраться с процедурами и функциями. leedhas Паскаль, Turbo Pascal, PascalABC.NET 3 14.01.2009 14:23
работа со строковыми процедурами и функциями pooharilo Паскаль, Turbo Pascal, PascalABC.NET 3 26.12.2008 23:51
Оформить задачу процедурами Anita_i Паскаль, Turbo Pascal, PascalABC.NET 2 12.05.2008 12:37