[pascal]format出力&プロシージャ


調味料を見てから始めます
program main;
uses sysutils;
type
  Point=Record
  x:int64;
  y:int64;
  end;
  PointArray=Array[1..100000] of Point;
var
  T,N:integer;
  i:integer;
  arr:PointArray;
  A:Real;
  P:Point;
procedure DFS(idx:integer;pt:Point;c:integer);
var
  i:integer;
begin
  if(c=0)then
    begin
      for i:=idx to N do
        begin
          pt.x:=pt.x-arr[i].x;
          pt.y:=pt.y-arr[i].y;
        end;
        if(A>pt.x*pt.x+pt.y*pt.y)then
          begin
          A:=pt.x*pt.x+pt.y*pt.y;
          end;
    end
  else
    begin
      if(idx<>N)then
        begin
          for i:=idx to N do
            begin
              pt.x:=pt.x+arr[i].x;
              pt.y:=pt.y+arr[i].y;
              DFS(i+1,pt,c-1);
              pt.x:=pt.x-arr[i].x;
              pt.y:=pt.y-arr[i].y;
              pt.x:=pt.x-arr[i].x;
              pt.y:=pt.y-arr[i].y;
            end;
        end;
    end;
end;
begin
  readln(T);
  while(T<>0)do
  begin
    readln(N);
    for i:=1 to N do
      read(arr[i].x,arr[i].y);
      P.x:=0;
      P.y:=0;
      A:=99999999999999999999;
      DFS(1,P,N div 2);
      writeln(FormatFloat( '##0.000000',sqrt(A)));
    T:=T-1;
  end;
end.
このソースは1007次ベクトル整合問題を100準オンラインで阻止する解決策である.
https://www.acmicpc.net/problem/1007
このソースから学べるのは、
1.Pascalのプロセスは、パラメータを与えるときではなく、区別する.
2.パラメータを使用する場合、前にvarを付けると参照変数になります.
3.FormatFloat関数を使用してフォーマット出力を行います(ex:小数点6桁のみ出力).使い方は上のソースを見るとわかります.
4.その他の構造体の作り方、配列方法、beginとendの正しい使い方(endの後にいつつけるか、いつつけるか、いつつけないか)は、感覚さえあればわかります.
Pascalの文法はCとは本当に違います.
いろいろな言語を試したことがありますが、言語には似たような言語はありません.C、C++、Javaのみで、演算子と関数の使い方は非常に似ています.
言語が似ているのはパターンが似ているだけで、それに劣らない.
CとPerlは似てるから使いやすいそんなこと言わないで.
CとC++も比較対象そのものではない.