LOVEGUN

Bac 2013 23/05

Jan 16th, 2021 (edited)
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.19 KB | None | 0 0
  1. Program bac2013;
  2. Uses Wincrt;
  3. Type
  4.   mat = Array [1..24,1..24] Of Integer;
  5.   seq = Record
  6.     NL,ICD,ICF: Integer;
  7.   End;
  8.   tab = Array [1..50] Of seq;
  9. Var
  10.   f: Text;
  11.   m: mat;
  12.   l,c: Integer;
  13.  
  14. Procedure creation (Var f:Text);
  15. Begin
  16.   Assign (f,'C:\bac\Long_Seq.txt');
  17. End;
  18.  
  19. Procedure s0mme (m:mat;i,j,c:Integer;Var x,compt:Integer);
  20. Begin
  21.     //faire la somme a partir de la colonne j jusqu'a la fin
  22.     x := 0;
  23.   compt := j-1;
  24.   Repeat
  25.     compt := compt+1;
  26.     x := x+m[i,compt];
  27.   Until (x=0) Or (compt=c);
  28. End;
  29.  
  30. Procedure remplir (Var m:mat;Var l,c:Integer);
  31. Var
  32.   i,j: Integer;
  33. Begin
  34.     //remplissage de la matrice
  35.     Repeat
  36.     Write ('Saisir L: ');
  37.     Readln (l);
  38.     Write ('Saisir c: ');
  39.     Readln (c);
  40.   Until (2<l) And (l<24) And (2<c) And (c<24);
  41.   For i:=1 To l Do
  42.     For j:=1 To c Do
  43.       Begin
  44.         Write('T[',i,',',j,']: ');
  45.         Readln (m[i,j]);
  46.       End;
  47. End;
  48.  
  49. Function maxi (t:tab;n:Integer): Integer;
  50. Var
  51.   x,s,i: Integer;
  52. Begin
  53.     //recherche de la plus longue séquence
  54.     x := t[1].ICF;
  55.   s := t[1].ICF-t[1].ICD;
  56.   For i:=1 To n Do
  57.     If (s<t[i].ICF-t[i].ICD) Then
  58.       Begin
  59.         s := t[i].ICF-t[i].ICD;
  60.         x := t[i].ICF;
  61.       End;
  62.   maxi := x;
  63. End;
  64.  
  65. Procedure traitement (Var f:Text;m:mat;l,c:Integer);
  66. Var
  67.   x,compt,i,j,long,max: Integer;
  68.   t: tab;
  69. Begin
  70.   long := 0;
  71.     //Trouver les séquences d'éléments juxtaposés
  72.     For i:=1 To l Do
  73.     For j:=1 To c Do
  74.       Begin
  75.         s0mme (m,i,j,c,x,compt);
  76.         If (x=0) Then
  77.                     //Insertion de la séquence trouvé dans le tableau d'enregistrement T
  78.                     Begin
  79.             long := long+1;
  80.             With t[long] Do
  81.               Begin
  82.                 NL := i;
  83.                 ICD := j;
  84.                 ICF := compt;
  85.               End;
  86.           End;
  87.       End;
  88.     //Remplissage du fichier avec les données obtenues
  89.     Rewrite (f);
  90.   max := maxi(t,long);
  91.   Writeln (f,'Le nombre d''elements de la plus longue sequence = ',max);
  92.   For i:=1 To long Do
  93.     With t[i] Do
  94.       Begin
  95.         If (ICF-ICD=max-1) Then
  96.           Writeln (f,NL,'#',ICD,'#',ICF);
  97.       End;
  98.   Close (f);
  99. End;
  100. Begin
  101.   creation (f);
  102.   remplir (m,l,c);
  103.   traitement (f,m,l,c);
  104. End.
  105.  
Add Comment
Please, Sign In to add comment