LOVEGUN

Youssef's Program

Jan 15th, 2021
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.16 KB | None | 0 0
  1. Program suite_min ;
  2. Uses Wincrt ;
  3. Type
  4.   suite = Record
  5.     dep: String;
  6.     nb: Integer ;
  7.   End;
  8.   tab = Array [1..30] Of suite;
  9. Var
  10.   f: Text;
  11.   x,p: Integer ;
  12.   t: tab;
  13. Procedure creation(Var f:Text);
  14. Begin
  15.   Assign(f,'c:\bac\depart.txt');
  16. End;
  17. Function calcul(Var ch:String): Integer;
  18. Var
  19.   r,x,e: Integer ;
  20. Begin
  21.   Val (ch,x,e);
  22.   r := 0;
  23.   Repeat
  24.     If (x Mod 2=0) Then x := x Div 2
  25.     Else x := 3*x+1 ;
  26.     r := r+1;
  27.   Until x=1 ;
  28.   calcul := r ;
  29. End;
  30.  
  31. Procedure saisie(Var f:Text ; Var x:Integer ;Var p:Integer);
  32. Var
  33.   i: Integer ;
  34. Begin
  35.   Rewrite(f);
  36.   Repeat
  37.     Writeln('Le nombre de terme');
  38.     Readln(p);
  39.   Until (p>=1) And (p<=30) ;
  40.   For i:=1 To p Do
  41.     Begin
  42.       Repeat
  43.  
  44.  //le programme affichait toujours "saisir le terme U[0]:" même si tu travaillais sur d'autre terme
  45.         Writeln('saisir le terme U[',i,']: ');
  46.         Readln(x);
  47.       Until (x>2) And (x<1000);
  48.       Writeln(f,x);
  49.     End;
  50.   Close(f);
  51. End;
  52.  
  53. Procedure remplir(Var t:tab ; Var f:Text;p:Integer);
  54. Var
  55.   j,m,x,e: Integer ;
  56.   ch: String;
  57. Begin
  58.   Reset(f);
  59.  
  60. //il y'a un probleme si je mets le type de t[j].dep en entier tout le tableau recevera 1 donc je l'ai converti en chaine :)
  61.  
  62. //C la solution la plus simple que j'ai trouvé pour remplir le tableau il faut juste vérifier l'énoncé ken kalek lezem dep ykoun entier
  63.  
  64. //J'ai remplacé la boucle while par la boucle for c mieux khater bel while lezem thot with t[j+1] mouch t[j] sinon bich yfalet valeur
  65.   For j:=1 To p Do
  66.     Begin
  67.       Readln(f,t[j].dep);
  68.       t[j].nb := calcul(t[j].dep);
  69.     End;
  70.   Close(f);
  71. End;
  72.  
  73. Procedure affiche(t:tab;p:Integer);
  74. Var
  75.   min,j: Integer ;
  76. Begin
  77.   //tu aurais dû faire cette partie dans une fonction bich todkholch baadhek
  78.   min := t[1].nb;
  79.   For j:=1 To p Do
  80.     Begin
  81.       If t[j].nb<=min Then
  82.         Begin
  83.           min := t[j].nb;
  84.         End;
  85.     End;
  86.   //J'ai modifier ta solution avec la variable "rank" parce qu'elle n'etait pas fonctionelle
  87.   For j:=1 To p Do
  88.     If t[j].nb=min Then Writeln ('Le terme : ',t[j].dep,' Le nb: ',t[j].nb);
  89. End;
  90. Begin
  91.   creation(f);
  92.   saisie(f,x,p);
  93.   remplir(t,f,p) ;
  94.   affiche (t,p);
  95. End.
  96.  
Advertisement
Add Comment
Please, Sign In to add comment