Advertisement
LOVEGUN

Bac 2010 10H30

Apr 21st, 2021
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.60 KB | None | 0 0
  1. Program bac201010h30;
  2. Uses Wincrt;
  3. Type
  4.   tab = Array ['A'..'J','X'..'Y'] Of Integer;
  5.   mat = Array ['A'..'J','A'..'J'] Of Real;
  6. Var
  7.   m: mat;
  8.   t: tab;
  9.   n: Integer;
  10.  
  11. Procedure remplir_T (Var t:tab;Var n:Integer);
  12. Var
  13.   i,c: Char;
  14. Begin
  15.   Repeat
  16.     Write ('Saisir N: ');
  17.     Readln (n);
  18.   Until (3<=n) And (n<=10);
  19.   c := Chr(64+n);
  20.   For i:='A' To c Do
  21.     Begin
  22.       Write ('Saisir X ',i,': ');
  23.       Readln (t[i,'X']);
  24.       Write ('Saisir Y ',i,': ');
  25.       Readln (t[i,'Y']);
  26.     End;
  27.   For i:='A' To c Do
  28.     Begin
  29.       Writeln ('X: ',t[i,'X']);
  30.       Writeln ('Y: ',t[i,'Y']);
  31.     End;
  32.   Clrscr;
  33. End;
  34.  
  35. Procedure remplir_M (Var m:mat;t:tab;n:Integer);
  36. Var
  37.   i,j,c: Char;
  38. Begin
  39.   c := Chr(64+n);
  40.   For i:='A' To c Do
  41.     For j:='A' To c Do
  42.       m[i,j] := Sqrt(Sqr(t[j,'X']-t[i,'X'])+Sqr(t[j,'Y']-t[i,'Y']));
  43. End;
  44.  
  45. Procedure affiche (m:mat;n:Integer);
  46. Var
  47.   i,j,c,p,pm: Char;
  48.   min: Real;
  49. Begin
  50.   c := Chr(64+n);
  51.   For i:='A' To c Do
  52.     Begin
  53.       Writeln;
  54.       For j:='A' To c Do
  55.         Write (m[i,j]:0:2, ' | ');
  56.     End;
  57.   Writeln;
  58.   Repeat
  59.     Writeln ('Saisir un point: ');
  60.     Readln (p);
  61.     p := Upcase(p);
  62.   Until (p In ['A'..c]);
  63.   If p='A' Then
  64.     Begin
  65.       min := m[p,'B'];
  66.       pm := 'B';
  67.     End
  68.   Else
  69.     Begin
  70.       min := m[p,'A'];
  71.       pm := 'A';
  72.     End;
  73.   For j:='A' To c Do
  74.     If (min>m[p,j]) And (m[p,j]<>0) Then
  75.       Begin
  76.         min := m[p,j];
  77.         pm := j;
  78.       End;
  79.   Writeln ('Le point le plus proche de ',p,' est : ',pm);
  80. End;
  81. Begin
  82.   remplir_T (t,n);
  83.   remplir_M (m,t,n);
  84.   affiche (m,n);
  85. End.
  86.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement