Показать сообщение отдельно

  #4  
Старый 28.04.2009, 20:52
KaZ@NoVa
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
С нами: 9394886

Репутация: 1467


По умолчанию

Цитата:
Сообщение от ViP-K1LLeR  
Сегодня дали такую задачу(pascal):


P.S: Требования выносят мозг. Помогите пожалуйста
Цитата:
program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

type
vector_type = record
x,y,scal:extended;
end;
vector_array=array[1..100] of vector_type;

var
a,b:extended;
vectors:vector_array;

function Scalar(x1,y1,x2,y2: extended):extended;
begin
Scalar:=x1*x2+y1*y2;
end;

procedure ReadFromFile(var res:vector_array);
var
i:byte;
begin
i:=1;
reset(input,'points.dat');
while (i<=100) and (not Eof(input)) do begin
read(res[i].x);
readln(res[i].y);
inc(i);
end;
close(input);
end;

procedure FindScalar(a,b:extended; var res:vector_array);
var
i:byte;
begin
for i:=1 to 100 do begin
res[i].scal:=Scalar(a,b,res[i].x,res[i].y);
end;
end;

procedure Sort(var res:vector_array);
var
i,l:byte;
tmp:extended;
begin
for i := 99 downto 1 do begin
for l := 1 to i do
if res[l].scal>res[l+1].scal then begin
tmp:= res[l].scal;
res[l].scal:= res[l+1].scal;
res[l+1].scal:= tmp;
tmp:= res[l].x;
res[l].x:= res[l+1].x;
res[l+1].x:= tmp;
tmp:= res[l].y;
res[l].y:= res[l+1].y;
res[l+1].y:= tmp;
end;

end;
end;

procedure WriteToFile(res:vector_array);
var
i:byte;
begin
rewrite(output,'points1.dat');
for i := 1 to 100 do begin
writeln(res[i].x,' ',res[i].y);
end;
close(output);
end;

begin
writeln('Enter A component value...');
readln(a);
writeln('Enter B component value...');
readln(b);
ReadFromFile(vectors);
FindScalar(a,b,vectors);
Sort(vectors);
WriteToFile(vectors);
{ TODO -oUser -cConsole Main : Insert code here }
end.
Это на дельфи,
тебе придётся слегка подправить запись и чтение из файла, просто вроде в паскале нельзя так обращаться легко как в дельфи, но это буквально вроде минут на 5 должно быть

Последний раз редактировалось KaZ@NoVa; 28.04.2009 в 20:54..
 
Ответить с цитированием