Write float arrays to a text file: Difference between revisions
Content added Content deleted
(Ada example) |
m (→{{header|Python}}: Changed over to works with template) |
||
Line 43: | Line 43: | ||
=={{header|Python}}== |
=={{header|Python}}== |
||
{{works with|Python|2.6}} |
|||
[[Category:Python]] |
|||
import itertools |
import itertools |
||
def writedat(filename, x, y, xprecision=3, yprecision=5): |
def writedat(filename, x, y, xprecision=3, yprecision=5): |
||
Line 50: | Line 49: | ||
for a, b in itertools.izip(x, y): |
for a, b in itertools.izip(x, y): |
||
f.write("%.*g\t%.*g\n" % (xprecision, a, yprecision, b)) |
f.write("%.*g\t%.*g\n" % (xprecision, a, yprecision, b)) |
||
==Example== |
|||
>>> import math |
>>> import math |
||
>>> x = [1, 2, 3, 1e11] |
>>> x = [1, 2, 3, 1e11] |
Revision as of 15:06, 19 February 2008
Write float arrays to a text file
You are encouraged to solve this task according to the task description, using any language you may know.
You are encouraged to solve this task according to the task description, using any language you may know.
Write two equal-sized numerical arrays `x' and `y' to a two-column text file named `filename'.
The first column of the file contains values from an `x'-array with a given `xprecision', the second -- values from `y'-array with `yprecision'.
For example, considering:
x = {1, 2, 3, 1e11}; y = {1, 1.4142135623730951, 1.7320508075688772, 316227.76601683791}; /* sqrt(x) */ xprecision = 3; yprecision = 5;
The file is:
1 1 2 1.4142 3 1.7321 1e+011 3.1623e+005
This task is intended as a subtask for Measure relative performance of sorting algorithms implementations.
Ada
with Ada.Text_Io; with Ada.Float_Text_Io; with Ada.Numerics.Elementary_Functions; use Ada.Numerics.Elementary_Functions; procedure Write_Float_Array is type Float_Array is array(1..4) of Float; X : Float_Array := (1.0, 2.0, 3.0, 1.0e11); Y : Float_Array ; procedure Write_Columns(X : Float_Array; Y : Float_Array; X_Pres : Natural := 3; Y_Pres : Natural := 5) is begin for I in Float_Array'range loop Ada.Float_Text_Io.Put(Item => X(I), Fore => 1, Aft => X_Pres - 1); Ada.Text_IO.Put(" "); Ada.Float_Text_Io.Put(Item => Y(I), Fore => 1, Aft => Y_Pres - 1); Ada.Text_Io.New_Line; end loop; end Write_Columns; begin for I in Float_Array'range loop Y(I) := Sqrt(X(I)); end loop; Write_columns(X, Y); end Write_Float_Array;
Python
import itertools def writedat(filename, x, y, xprecision=3, yprecision=5): with open(filename,'w') as f: for a, b in itertools.izip(x, y): f.write("%.*g\t%.*g\n" % (xprecision, a, yprecision, b))
Example
>>> import math >>> x = [1, 2, 3, 1e11] >>> y = map(math.sqrt, x) >>> y [1.0, 1.4142135623730951, 1.7320508075688772, 316227.76601683791] >>> writedat("sqrt.dat", x, y) >>> # check ... >>> for line in open('sqrt.dat'): ... print line, ... 1 1 2 1.4142 3 1.7321 1e+011 3.1623e+005