[pascal]format出力&プロシージャ
調味料を見てから始めます
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++も比較対象そのものではない.
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++も比較対象そのものではない.
Reference
この問題について([pascal]format出力&プロシージャ), 我々は、より多くの情報をここで見つけました https://velog.io/@springkim/pascal-format-출력-프로시저テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol