Voici l'énoncé de l'exercice (en pièce jointe) :
Nom : Enoncé.png
Affichages : 704
Taille : 194,5 Ko
et voici mon code pour le solutionner (mais malheureusement je reçoit une erreur runtime 100 :'( )
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
 
program Suit_Min;
type
	suite = record
		Dep, Nb : integer;
    end;
    Tfichier1 = file of integer;
    Tfichier2 = file of suite;
var
	p : integer;
    F1 : Tfichier1;
    F2 : Tfichier2;
{ ********** La saisie de P ********** }
procedure taille (var p : integer);
    begin
        repeat 
            writeln ('Donnez la taille du fichier');
            readln(p);
        until p in [2..30];
    end;
{ ********** Le remplisage du fichier "Depart.dat" ********** }
procedure remplir (var F1 : Tfichier1 ; p : integer);
    var
        U0, i : integer;
    begin
        rewrite(F1);
        for i:=1 to p do
            begin
                repeat
                    writeln('Donnez le ',i,' eme entier compris entre 2 et 1000 : ');
                    readln(U0);
                until U0 in [2..1000];
                write(F1,U0);
            end;
    end;
{ ********** Calcul de la suite ********** }
function calcul (U : integer) : integer;
    var
        Up, nbr : integer;
    begin
        nbr := 1;
        repeat
            Up := U; 
            if (Up mod 2 = 0) then
                U := Up div 2
            else
                U := 3*Up + 1;
            nbr := nbr + 1;
        until U = 1; 
        calcul := nbr;
    end;
{ ********** Génération du fichier Suite.dat ********** }
procedure generer (var F1: Tfichier1 ; var F2 : Tfichier2 ; p : integer);
    var
        S : suite;
        i , U0: integer;
    begin
        reset(F1);
        rewrite(F2);
        for i:=1 to p do 
            begin
                read(F1, U0);
                S.Dep := U0;
                S.Nb := calcul (U0);
                write(F2 , S);
            end;
    end;
{ ********** Recherche du minimal ********** }
function minimal (var F2 : Tfichier2 ; p : integer) : integer;
    var 
        min, i : integer;
        S : suite;
    begin
        read (F2,S);
        min := S.Nb;
        for i := 1 to p do 
        begin
            read(F2,S);
            if min > S.Nb then
                min := S.Nb;
        end;
    end;
{ ********** Affichage ********** }
procedure afficher (var F2 : Tfichier2  ;  p : integer);
    var
        min, i : integer;
        S : suite;
    begin
        min := minimal (F2, p );
        for i := 1 to p do
            begin
                read (F2,S);
                if (S.Nb = min) then 
                    writeln(S.Dep);
            end;
    end;
{ ********** Programme Principal ********** }
begin
    assign(F1, 'C:\Depart.dat');
    assign(F2, 'C:\Suite.dat');
	taille (p);
	remplir(F1,p);
	generer(F1,F2,p);
	afficher(F2,p);
    close (F1);
    close (F2);
end.
Merci d'avance pour votre aide