Je trouve une difficulté dans l'affichage du fichier, même si mon programme tourne et exécute ce qui lui est demandé et, bien sûr, il est correct, je ne trouve pas l'erreur dans le remplissage du fichier. Si quelqu'un pouvait m'indiquer mon erreur et m'aider, merci.

Voici l'énoncé de l'exercice :
Le système de numération définit chaque nombre par une valeur (V) et une base (B) dans laquelle elle est exprimée, alors on représente un nombre N sous cette forme (V)B.

Exemples : (47)8 ;(101011001)2 ;(CAFE)16 ;(139)10..
Faire l’ananlyse et déduire les algorithmes d’un programme effectuant les tâches suivantes :

saisir n nombres, de la forme (V)B,dans un fichier de données dont le chemin physique est "C:\Nombr.txt". sachant que V est une valeur positive,B dans [2,8,10,16] et n dans [5..200].
Trier le dans l’ordre croissant le contenu du fichier "Nomb.txt" et afficher ce dernier.

Exemple pour n = 8
• Soit le contenu,initial,du fichier Nomb.txt comme suit :
(105)10 ;(10000001)2 ;(107)8 ;(10100001)2 ;(AFEF)16 ;(BAC)16 ;(506)10 ;(754)8

Le contenu du fichier Nomb.FCH trié dans l’ordre croissant :
(10000001)2 ;;(107)8 ; (105)10 ; (10100001)2 ;(754)8;(506)10 ;(BAC)16 ;(AFEF)16 .
La solution ne doit pas utiliser des tableaux
Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
Program ex16;
uses wincrt;
type
nomb =record
v:string;
b:2..16;
end;
fich=file of nomb;
var f,f2:fich;
 
 
Procedure lecture (var x: integer);
  begin
       repeat
             write ('donnez le nombre d"entier que vous voulez entrer ');
             readln (x);
       until (x in [1..200]);
  end;
 
function verif (x:nomb;base:integer):boolean;
var
i,cpt:integer;
  begin
       cpt:=0;    
 
       with x do
                begin
                     for i:=1 to length(v) do
                          if pos (upcase(v[i]),'0123456789ABCDEFGHIJKLMNOPQRSTVWXYZ')>base then cpt:=cpt+1;
                          if cpt >0 then verif :=false
                          else verif :=true;
  end;
  end;
 
Procedure saisie (var x:nomb);
  begin
       with x do
          begin
               repeat
                    write('base = ');
                    readln(b);
               until b in [2,8,10,16];
 
               repeat
                    write ('valeur = ');
                    readln (v);
               until verif (x,b);
          end;
  end;
 
Procedure creation ( var f:fich);
var i,n:integer;
    x:nomb;
  begin
       rewrite (f);
       lecture (n);
       for i:=1 to n do
           begin
                saisie (x);
                write (f,x);
           end;
  end;
 
procedure affiche (var f:fich);
var x:nomb;
  begin
       reset (f);
       write ('la liste des nombres triés dans l"ordre croissant : ');
       while (not eof (f)) do
             begin
                  read (f,x);
                  write('(',x.v,')',x.b)
             end;
  end;
 
 
procedure permut ( var f:fich;a,b:nomb;p:integer);
  begin
      reset (f);
      seek (f,p-2);
      write (f,b);
      write (f,a)
  end;
 
 
function puiss (a,b:integer):integer;
var p,i:integer;
  begin
      p:=1;
      for i:=1 to b do
          p:=p*a;
      puiss:=p;
  end;
 
procedure convb_10 (var x:nomb);
var r,e,i,s:integer;
  begin
      s:=0;
      with x do
           begin
               for i:=1 to length (v) do
                  begin
                      val (v[i],r,e);
                      if (e<>0) then r:=ord (v[i])-55;
                      s:=s + r* puiss (b,length(v)-i);
                  end;
               str(s,v);
           end;
  end; 
 
procedure tri (var f,f2:fich);
var x,y:nomb;
    v:boolean;
      begin
       reset(f);
       rewrite(f2);
       while (not eof (f))do
           begin
               read (f,x);
               if (x.b)<>10 then convb_10(x);
               write (f2,x);
           end;
       repeat
           seek (f2,0);
           v:=true;
           while (not(filepos(f2)= filesize(f2)-1)) do
                begin
                  read (f2,x);
                  read (f2,y);
                  if (x.v>y.v) then
                     begin
                         permut (f2,x,y,filepos (f2));
                         v:= true;
                     end;
                  seek (f2, filepos(f2)-1)
                end;
       until (v=true);
  end;
 
procedure conv10_b(var x:nomb);
var r,y,e :integer;
    c,a:string;
begin
  c:='';
  with x do
       begin
          val (v,y,e);
          repeat
               r:=y mod b;
               y:=y div b;
               str (r,a);
               c:= a +c
          until (y=0);
          v:=c;
       end;
end;
 
procedure transfert ( var f,f2:fich);
var x:nomb;
  begin
      rewrite (f);
      reset(f2);
      while not(eof(f2)) do
           begin
           read (f2,x);
           if (x.b<>10) then conv10_b(x);
           write (f,x);
           end;
  end;
 
 
 begin
 assign (f,'c:\nomb.txt');
 assign (f2,'c:\nomb2.txt');
 creation(f);
 tri(f,f2);
 transfert (f,f2);
 affiche (f);
 end.