example_8
This commit is contained in:
parent
3f11e9e2df
commit
59e66c4231
|
@ -0,0 +1,15 @@
|
||||||
|
.dub
|
||||||
|
docs.json
|
||||||
|
__dummy.html
|
||||||
|
docs/
|
||||||
|
/example_8
|
||||||
|
example_8.so
|
||||||
|
example_8.dylib
|
||||||
|
example_8.dll
|
||||||
|
example_8.a
|
||||||
|
example_8.lib
|
||||||
|
example_8-test-*
|
||||||
|
*.exe
|
||||||
|
*.o
|
||||||
|
*.obj
|
||||||
|
*.lst
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"authors": [
|
||||||
|
"Alexander"
|
||||||
|
],
|
||||||
|
"description": "Интерфейсы и классы",
|
||||||
|
"license": "proprietary",
|
||||||
|
"name": "example_8",
|
||||||
|
"targetPath": "bin"
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
import std.stdio : writeln, stdin;
|
||||||
|
import std.exception : enforce;
|
||||||
|
import min_, stat_;
|
||||||
|
|
||||||
|
void main(string[] args)
|
||||||
|
{
|
||||||
|
Stat[] stats;
|
||||||
|
foreach (arg; args[1 .. $])
|
||||||
|
{
|
||||||
|
auto newStat = cast(Stat) Object.factory("min_." ~ arg);
|
||||||
|
enforce(newStat, "Invalid statistics function: " ~ arg);
|
||||||
|
stats ~= newStat;
|
||||||
|
}
|
||||||
|
for (double x; stdin.readf(" %s ", &x) == 1;)
|
||||||
|
{
|
||||||
|
foreach (s; stats)
|
||||||
|
{
|
||||||
|
s.accumulate(x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach (s; stats)
|
||||||
|
{
|
||||||
|
s.postprocess();
|
||||||
|
writeln(s.result());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
module min_;
|
||||||
|
|
||||||
|
import stat_;
|
||||||
|
|
||||||
|
class Min : Stat
|
||||||
|
{
|
||||||
|
private double min = double.max;
|
||||||
|
|
||||||
|
void accumulate(double x)
|
||||||
|
{
|
||||||
|
if (x < min)
|
||||||
|
{
|
||||||
|
min = x;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void postprocess() {}
|
||||||
|
|
||||||
|
double result()
|
||||||
|
{
|
||||||
|
return min;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
module stat_;
|
||||||
|
|
||||||
|
interface Stat
|
||||||
|
{
|
||||||
|
void accumulate(double x);
|
||||||
|
void postprocess();
|
||||||
|
double result();
|
||||||
|
}
|
Reference in New Issue