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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2011, 20:51   #1
ScareCroW12
 
Регистрация: 01.05.2011
Сообщений: 8
По умолчанию Процедуры, функции и модули

Нужна помощь в составлении процедур, функций а также составления из них подпрограмм подпрограмм и затем модуля. В общем я пока в процедурах не очень разобрался и хотелось бы чтобы кто-нибудь помог с подпрограммой и составлением модуля (совсем плохо с этим - только начали изучать и не получалось ничего до сих пор). Задачи у меня все есть, которые нужно...Наверно здесь не маленькая работа..ну хотя бы на какую-то помощь буду надеяться)...Спасибо заранее за помощь!)

Задача №1:

Код:
{Для матрицы А (mxn) найти произведение положительных элементов побочной диагонали}
Program M1;
Uses Crt;
const m=3;
      n=3;
Var a:array[1..m,1..n] of integer;
    i,j,p:integer;
begin
clrscr;
     writeln('vvedite matricu');
      for i:=1 to m do
       for j:=1 to n do
        read(a[i,j]);
begin
p:=1;
  for i:=1 to m do
    if a[i,m+1-i]>0 then
     p:=p*a[i,m+1-i];
    writeln('p= ',p);
   end;
 readkey;
end.
Задача №2:

Код:
{Из элементов столбца с номером к массива А (mxn) вычесть минимальный элемент этого столбца}
Program M2;
uses crt;
const nmax=20;{максимальный размер матрицы}
var a:array[1..nmax,1..nmax] of integer;
    m,n,i,j,k:integer;
begin
clrscr;
randomize;
repeat
write('кол-во строк до ',nmax,' m=');
readln(m);
until (m>0) and (m<=nmax);
repeat
write('кол-во столбцов до ',nmax,' n=');
readln(n);
until (n>0) and (n<=nmax);
writeln('Исходная матрица:');
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=random(20);
    write(a[i,j]:3);
   end;
  writeln;
 end;
writeln;
repeat
write('введите номер строки от 1 до ',m,' k=');
readln(k);
until (k>0) and (k<=m);
if k=m then m:=m-1{если последняя строка. то просто обрезаем}
else{иначе сдвигаем строки от к+ до m на 1 вверх и обрезаем}
 begin
  for i:=k to m-1 do
  for j:=1 to n do
  a[i,j]:=a[i+1,j];
  m:=m-1;
 end;
writeln('удаление строки');
for i:=1 to m do
 begin
  for j:=1 to n do
  write(a[i,j]:3);
  writeln;
 end;
readln
end.
Задача №3:

Код:
{Из матрицы А (mxn) вычеркнуть к-ю строку (к<=m )}
Program abc;
uses crt;
type mass =array[1..100, 1..100] of integer;
var
a:mass;
i, j, n, m, k:byte;
min:integer;

begin
Clrscr;
writeln('vvedite razmernost matricu: ');
write('m = ');
readln(m);
write('n = ');
readln(n);
writeln('vvedite matricu');
for i:=1 to m do
for j:=1 to n do
begin
write('a[', i, ']', '[', j,'] = ');
readln(a[i,j]);
end;
write('vvedite nomer stolbca k = ');
readln(k);
min:=a[1,k];
for i:=2 to m do
if (a[i,k]<min) then min:=a[i,k];
for i:=1 to m do
a[i,k]:=a[i,k]-min;
for i:=1 to m do
begin
for j:=1 to n-1 do
begin
write(a[i,j]);
write('       ');
end;
writeln( a[i,n]);
end;
readkey;
end.
Задача №4:

Код:
{Написать программу табулирования сложной функции}
Program M4;
uses crt;
function F(x:real):real;
var p,s,y:real;
    n:byte;
begin
if x>0 then
 begin
  p:=1;y:=1;
   for n:=1 to 8 do
begin
    y:=y*x;
    p:=p*(1+y/n);
end;
 F:=x*p/(x+1);
  end;
   begin
    s:=0;y:=1;
     for n:=0 to 7 do
      begin
     if n>0 then y:=y*x;
    s:=s+x/(n+1);
   end;
  F:=s;
 end;
end;
var x:real;
begin
clrscr;
x:=-0.5;
while x<=0.5 do
 begin
  writeln('x=',x:4:1,'  y=',F(x):6:2);
  x:=x+0.1;
 end;
readkey;
end.

Последний раз редактировалось ScareCroW12; 04.05.2011 в 20:59.
ScareCroW12 вне форума Ответить с цитированием
Старый 05.05.2011, 00:53   #2
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

Код:
Program M1;
Uses Crt;
const m=3;
        n=3;
type mas:array[1..m,1..n] of integer;

procedure pol(a:mas; var p:integer);
var i:integer;
begin
  p:=1;
  for i:=1 to m do
    if a[i,m+1-i]>0 then  p:=p*a[i,m+1-i];
end;

Var a:mas;
    i,j,proiz:integer;
begin
clrscr;
     writeln('vvedite matricu');
      for i:=1 to m do
       for j:=1 to n do
        read(a[i,j]);
  pol(a,proiz);   
  writeln('p= ',proiz);
  readkey;
end.
с использованием модуля нужно будет создать файл (modul.pas) в котором:
Код:
unit modul; {совпадает с именем файла}

interface {доступные элементы из модуля}

const m=3;
        n=3;

type mas:array[1..m,1..n] of integer;

procedure pol(a:mas; var p:integer);


implementation {раздел реализации}

procedure pol(a:mas; var p:integer);
var i:integer;
begin
  p:=1;
  for i:=1 to m do
    if a[i,m+1-i]>0 then  p:=p*a[i,m+1-i];
end;

end.
сохраните и откомпилируйте файл, чтоб создался файл с расширением .tpu

а в исполняем файле пишем:
Код:
Uses Crt,modul;

Var a:mas;
    i,j,proiz:integer;

begin
clrscr;
     writeln('vvedite matricu');
      for i:=1 to m do
       for j:=1 to n do
        read(a[i,j]);
  pol(a,proiz);   
  writeln('p= ',proiz);
  readkey;
end.
Есть вопросы, пишите в ЛС.

Последний раз редактировалось rubius2008; 05.05.2011 в 01:00.
rubius2008 вне форума Ответить с цитированием
Старый 05.05.2011, 16:36   #3
ScareCroW12
 
Регистрация: 01.05.2011
Сообщений: 8
По умолчанию

Спасибо! а вот с остальными как - нужно также оформить их в виде процедур, затем поместить в модуль и снова откомпилировать?..если я правильно понял конечно)
ScareCroW12 вне форума Ответить с цитированием
Старый 05.05.2011, 20:51   #4
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

да их можно оформить в виде процедур или функций (подпрограмм) и запихать по аналогии в этот же модуль или в другой, и подключить через uses в исполняемой программе. Откомпилировать и сохранить, я точно не помню что создает файл .tpu
Есть вопросы, пишите в ЛС.
rubius2008 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедуры и функции graf890 Помощь студентам 3 19.02.2011 00:19
Процедуры и функции KiLLAS Помощь студентам 8 05.11.2010 20:29
Модули и процедуры. Zimyx Общие вопросы Delphi 1 17.05.2009 17:36
Модули и процедуры Алексей Д. Помощь студентам 32 24.05.2008 19:08