Bonsoir à tous.

Dans un exercice, on me demande :
- de créer deux tableaux T1( 50 Entiers ) ET T2 ( 5 ENTIERS )
- d'identifier le nombre d'éléments de T2 qui se répète plus de 4 fois dans le 1er tableau

J'ai alors pu trouver quelque chose et, j'ai compilé mais le programme ne fait que calculer sans me donner de résultats.
J'ai même essayé sans le RANDOMIZE mais hélas...

Le voici :

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
program TABIZI3;
uses crt;
Const a=50 ;
      b= 4 ;
type tab1 = array[1..a] of integer ;
     tab2 = array[1..b] of integer ;
     tab3 = array[1..b*4] of integer ;  \\ en vue d'afficher  le nombre d'éléments de T2 qui se répète plus de 4 fois dans le 1er tableau
 
var  x: tab1; y: tab2 ; z:tab3 ; i,j,c,k ,nbt : integer;
 
       d: boolean; (* Le booléen  c'est pour une comparaison supplémentaire *)
 
 
begin
RANDOMIZE
nbt:=0  ;
  d:= true ; (* nbt <4 *)
  for i:=1 TO a  do
X[I]:=RANDOM(500) ;   (* pour générer des nombres aléatoires*)
  k:=1  ;
  Writeln('Fini pour le 1er');
 for j:=1 TO b  do
readln(y[j]);
  Writeln('Fini pour le 2nd');
  i:=1;j:=1;k:=1;
  WHILE J<=B   do(* 1 *)   ;
BEGIN
   if  I<=A then
BEGIN
WHILE I<=A  do
BEGIN  (* 2 *)
WHILE K<=b*4  do          (* 3 *)
Begin
if c=x[i] then
begin
nbt:=nbt+1;
end;
i:=i+1;
end;  (* 2 *)
IF nbt >=6 then
begin
z[k]:=y[j];
d:=false  (* nbt >= 4 *);
  z[k]:=y[j];
k:=k+1 ;
end; (* 3 *)
j:=j+1 ;
end; (* 1 *)
Writeln(z[k]);
end
 
    else
i:=1; j:=j+1 ;
WHILE I<=A    do
BEGIN  (* 2 *)
WHILE K<=b*6    do        (* 3 *)
Begin
if y[j]=x[i] then
begin
nbt:=nbt+1;
end;
i:=i+1;
end;  (* 2 *)
IF nbt >=6 then
begin
d:=false  (* nbt >= 6 *);
z[k]:=y[j];
k:=k+1 ;
end; (* 3 *)
j:=j+1 ;
end; (* 1 *)
 
 end ;
readkey;
  end.
QUELLE MODIFICATION DOIT-ON APPORTER ???
MERCI D'AVANCE ...