Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Подпрограммы-процедуры


Автор: PrinceMike 1.12.2006, 22:23
 smile как сделать 4(a,b,c,d) новых мaссива подпрограммой- процедурой по правилу:
user posted image

, если даны массивы z,x,c,v
x={0.25,-1.5,05.,4,5}
y={0.1,-1.8,2.25}
z={0.48,1.25,-0.1,3.2,5.1}
p={2.5,1.44,-0.5,0,1}

и еще вопросик : как обябъвть массив, если потом его чтение будет совершаться из файла
Заранее благодарен

Автор: Zero 1.12.2006, 22:56
Цитата(PrinceMike @  1.12.2006,  23:23 Найти цитируемый пост)
как обябъвть массив, если потом его чтение будет совершаться из файла

Из какого ещё файла ты собрался считывать массив экзешника можно сказать?

Автор: PrinceMike 1.12.2006, 23:05
какого ехе нафиг?smile
из *.pas естно
связать файл проги(*.pas ) и *.pas можно при помощи assign
а вот объявить хз можно ли так же как при типизированных-константах
Код

.............................
type x=array[1..4] of real;
type y=array[1..3] of real;
type z=array[1..5] of real;
type p=array[1..5] of real;
var a,b,c,d:real;
...............................
assign(f,'x.pas');reset(f);
assign(f,'y.pas');reset(f);
assign(f,'z.pas');reset(f);
assign(f,'p.pas');reset(f);
assign(q,'otv.pas');rewrite(q);

P.S это тока фрагменты кода, как вы догадались  smile 
Я сделал так, а вот вопрос остается открытым: как оформить подпрограмму-процедуру



Автор: Zero 2.12.2006, 01:04
Цитата(PrinceMike @  2.12.2006,  00:05 Найти цитируемый пост)
связать файл проги(*.pas ) и *.pas можно при помощи assign
а вот объявить хз можно ли так же как при типизированных-константах

PrinceMike, ты немного загнался...
Всего в паскале существует, 3 типа файла:
  •  текстовый
  •  типизированый
  •  нетипизированый
Цитата(PrinceMike @  2.12.2006,  00:05 Найти цитируемый пост)
Я сделал так, а вот вопрос остается открытым: как оформить подпрограмму-процедуру

Я опять непонял чё конкретно ты хочешь??? smile 
Просто процедуру, оформить чтобы из *.pas файла данные вытаскивала? Если да то вот так:
Код

program pr;
var
  f:text;
  s:string;

procedure primer;
begin
  assign(f,'c:\111.pas');
  reset(f);
  while not eoln(f) do
    begin
      readln(f,s);
      writeln(s);
    end;
  close(f);
end;

Begin
  primer;
End.

Содержимое файла 111.pas навсяк пожарный пиши лотиницей.

Если не то, то выражай по русски чё хочешь... Телепатов тут нет.

Автор: PrinceMike 2.12.2006, 08:31
assign то в теле самой проги, я не о том, я про конкретно мою задачу: формирование новых массивов по правилу... smile 

Автор: Grasshopper 2.12.2006, 09:32
Цитата(PrinceMike @ 2.12.2006,  03:23)
smile как сделать 4(a,b,c,d) новых мaссива подпрограммой- процедурой по правилу:
user posted image

, если даны массивы z,x,c,v
x={0.25,-1.5,05.,4,5}
y={0.1,-1.8,2.25}
z={0.48,1.25,-0.1,3.2,5.1}
p={2.5,1.44,-0.5,0,1}

Код

const 
  n = 4;
var 
  x, res : array [1..n] of double;
procedure my_proc (input_arr : array of double; var output_arr : array of double);
var i : integer;
begin
  for i:=1 to n do
    if input_arr[i] < 0 then 
      output_arr[i] := sqr(input_arr[i])
    else if input_arr[i] > 1 then 
      output_arr[i] := input_arr[i]
    else 
      output_arr[i] := sqr(input_arr[i])*input_arr[i];
end;

begin
  ...
  my_proc(x, res);
  ...
end.


Добавлено @ 09:34 
А чтоб массив из файла прочитать, ничего особенного объявлять не надо. Все как обычно)

Автор: Zero 2.12.2006, 12:21
PrinceMike, прочитай http://forum.vingrad.ru/act-SR/f-27.html, особенно обрати внимание на 11 пункт в данном случае. smile 

Автор: PrinceMike 2.12.2006, 14:29
Zero, прошу прощения, буду работать над собой smile

Добавлено @ 14:32 

Grasshopper,  а почему тут double  smile  

Автор: Grasshopper 2.12.2006, 14:41
Цитата(PrinceMike @  2.12.2006,  19:29 Найти цитируемый пост)
Grasshopper,  а почему тут double  smile   

Можно и real написать) Разница в точности) 

Автор: PrinceMike 2.12.2006, 16:03
Grasshopper, понятненько , а вот res - это как я у тебя понял переманная как и х, тока зачем она если в последующем не используется?  smile  smile 

а так спс smile smile  smile  буду вникать че да как smile

Автор: Grasshopper 2.12.2006, 16:21
PrinceMike, это я под результат задумывал) Потом забыл убрать)

Добавлено @ 16:24 
Вот) исправил)

Автор: PrinceMike 2.12.2006, 17:32
Grasshopper,  так у нас массывы все с разным числм элементов, т.е. почему мы взяли 4 элемента в массиве?
у нас четыре массива с разным числом элементов  smile 

Автор: Grasshopper 2.12.2006, 17:44
А, черт, проглядел... есть, по-моему, функция, возвращающая длину массива, а если я ошибаюсь, то тогда надо еще длину массива в процедуру передавать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)