1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
{ Extraire les dates de Pâques contenues dans le fichier "estr-tbl.txt".
Convertir les dates en nombres entiers (15 avril = 15 + 31 = 46).
Produire un fichier source en Basic, en C ou en Pascal. }
program MakeSource;
{$IFDEF VPASCAL}
{&PMTYPE PM}
{$ELSE}
{$APPTYPE GUI}
{$ENDIF}
{-DEFINE B} // Basic
{-DEFINE C} // C
{$DEFINE P} // Pascal
uses
SysUtils;
const
filename = 'estr-tbl.txt';
type
tReader = object
table: array[0..299] of integer;
procedure FillTable;
procedure MakeSourceFile;
end;
procedure tReader.FillTable;
var
t: text;
s: string;
i, j: integer;
erreur: integer;
begin
i := -1;
Assign(t, filename);
Reset(t);
while not Eof(t) do
begin
ReadLn(t, s);
for j := 1 to Length(s) do
if (s[j] = 'M') or (s[j] = 'A') then
begin
Inc(i);
if i < 300 then
begin
Val(Copy(s,j+3,2), table[i], erreur);
if s[j] = 'A' then
Inc(table[i], 31);
end else
begin
Close(t);
Exit;
end;
end;
end;
end;
procedure tReader.MakeSourceFile;
const
{$IFDEF B}name = 'tbl.bas';{$ENDIF}
{$IFDEF C}name = 'tbl.c';{$ENDIF}
{$IFDEF P}name = 'tbl.pas';{$ENDIF}
var
f: text;
i: integer;
begin
Assign(f, name);
Rewrite(f);
WriteLn(f);
{$IFDEF B}Write(f, 'dim as integer tbl(299)={_'#13#10);{$ENDIF}
{$IFDEF C}Write(f, 'const int tbl[300]={'#13#10);{$ENDIF}
{$IFDEF P}Write(f, 'const tbl:'#13#10'array[0..299]of integer=('#13#10);{$ENDIF}
for i := 0 to 299 do
if i mod 10 = 9 then
if i < 299 then
{$IFDEF B}Write(f, Concat(IntToStr(table[i]), ',_'#13#10)){$ENDIF}
{$IFDEF C}Write(f, Concat(IntToStr(table[i]), ','#13#10)){$ENDIF}
{$IFDEF P}Write(f, Concat(IntToStr(table[i]), ','#13#10)){$ENDIF}
else
{$IFDEF B}Write(f, Concat(IntToStr(table[i]), '}')){$ENDIF}
{$IFDEF C}Write(f, Concat(IntToStr(table[i]), '};')){$ENDIF}
{$IFDEF P}Write(f, Concat(IntToStr(table[i]), ');')){$ENDIF}
else
Write(f, Concat(IntToStr(table[i]),','));
WriteLn(f);
Close(f);
end;
var
r: tReader;
begin
r.FillTable;
r.MakeSourceFile;
end. |
Partager