IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Замена процедуры на функцию
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Женский

Репутация: -  0  +


...........помогите пожалуйста заменить в этой задаче все процедуры на функции.................

Код


uses
  Sysutils;

const
   n=7;
   m=5;
type
   a = array[1..n] of integer;
   b = array[1..m] of integer;
procedure Input(var m1 : a; VAR m2 : b);

var
   i : byte;
begin
   for i := 1 to n do  begin
       writeln;
       write('a[',i,']= ');
       readln(m1[i]);
    end;
   writeln;
begin
for i := 1 to m do  begin
       writeln;
       write('b[',i,']= ');
       readln(m2[i]);
    end;
   writeln;
end; end;


procedure InputRnd(var m1 : a; VAR m2 : b);
const rnd = 100;
var
   i: byte;
begin
   randomize;
   for i := 1 to n do

     m1[i] := random(rnd);
     randomize;
     for i:=1 to m do
     m2[i] := random(rnd);
     writeln;
     writeln(' Massivi A , B  ');
     writeln;
     end;


procedure Print(m1 : a; m2 : b;Var p : integer);
var
   i : byte;
begin
   writeln;
   writeln( ' Massiv A ');
   for i := 1 to n do begin
      writeln;
      write(m1[i]:3,'  ');
   end;
   writeln;
   readln;
   writeln;
   writeln( ' Massiv B ');
   for i := 1 to m do begin
      writeln;
      write(m2[i]:3,'  ');
   end;
   writeln;
   readln;

   writeln;
   writeln(' P  =  ', p:3);
   writeln;
   end;

procedure Reform(m1 : a; m2 : b; var p: integer);
var
   i : byte;
   k:integer;
begin
   p:=1;
   if m1[1]>m2[1] then
   writeln( ' a[1]>b[1]   P = proizvedenie a[i] ');
   if m1[1]>m2[1] then
   for i:=1 to n do p:=p*m1[i]

   else if m1[1]<m2[1] then
   writeln( ' a[1]<b[1]   P = proizvedenie b[i] ');
   if m1[1]<m2[1] then
   for i:=1 to m do p:=p*m2[i]
  
   else if m1[1]=m2[1] then begin
   writeln( ' a[1]=b[1]   P = proizvedenie (a[i]+b[i]) ');
   k:=n;
   if m<k then k:=m;
   for i:=1 to k do p:=p*(m1[i]+m2[i]);
   end;

   writeln;
   writeln('Sdelano. Podtverdit i vivesti...');
   readln;
end;

var
   m1 : a;
   m2 : b;
   p:integer;
   z : byte;

begin

   repeat

      writeln('1 - Input ');
      writeln('2 - Input RND');
      writeln('3 - Print');
      writeln('4 - Reform');
      writeln('5 - Quit');

      readln(z);

      case z of
       1 : Input(m1, m2);
       2 : InputRnd(m1, m2);
       3 : Print(m1, m2,p);
       4 : Reform(m1, m2, p);
     end;
   until z=5;

end.



будьте так добры.........=)))..........Заранее спасибо!


--------------------
.........Destroy thoughts,which kills your soul................
.................but don't kills your soul by destroying these thoughts......
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Женский

Репутация: -  0  +


Я просто плохо понимаю, что именно нужно изменить в строчках, где объявляется процедура........


--------------------
.........Destroy thoughts,which kills your soul................
.................but don't kills your soul by destroying these thoughts......
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Вот общее правило.
у тебя есть примерно такой код
Код
procedure Proc( <...> var Name: SomeType );
begin
end;


переделываешь по такому шаблону:
Код
function Proc( <...> ): SomeType;
var Name: SomeType absolute Result;
begin
end;


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
переделываешь по такому шаблону:
Код
function Proc( <...> ): SomeType;
var Name: SomeType absolute Result;
begin
end;

И получаешь от преподавателя по шее за использование absolute... Зачем оно здесь? Тем более, что ОПЯТЬ, hardcase, я тебе повторяю - мы не в Дельфи !!! Ну нету в TP7 переменной Result. Нету, хотя и обещали...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


А модуль SysUtils есть в Pascal?


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






А у тебя паскаль есть?
Вот открой и посмотри. Нету SysUtils тоже... Это все 32-битные компилеры...

Но если я уберу из программы автора SysUtils, она будет точно так же работать. SysUtils просто нигде здесь не используется. А твой алгоритм - работать не будет... Еще вопросы?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Я к чему и клоню. он в Delphi сидит а не в TP7, раз в исходнике у него SysUtils стоит.


TP7 никогда не стояло, никогда в нём не прграммил.

Сообщение отредактировано: hardcase -


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 30.04.2024 0:19
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name