[Turbo Pascal] Solution d'un exercice

Bonjour,
Je cherche la solution du preoblème suivant en Pascal:

1- Ecrire une unité qui contient:
a- déclaration d'un tableau à n éléments (1<n<50) entiers.
b- procédure qui lit le tableau.
c- fonction qui retourne l'indice du tableau, du plus grand élément à partir d'une position donée (de k) à l aposition n (1<k<n).
d- procédure qui affiche les éléments du tableau.

2- Ecrire un programme en Turbo Pascal qui fait apple aux procédures et fonctions de l'unité pour ordonner un tableau au sens décroissant.

Merci d'avance, j'ai galéré avec cet exercice..
Configuration: Windows XP
Internet Explorer 6.0

6 réponses

  1. salut je suis etudiante a el jadida je veux la solution de l'exercice suivant
    procedure qui inverse le tableau entre deux positions données
    1. la solution d'un programme qui cherche les points selles d'une matrice
      1. Bonjour,
        Je cherche la solution du preoblème suivant en Pascal
        1. slt amine...
          si c'est le probleme en pascal concernant l'unité sur le tableau, voici une unité qui pourra t'aider....
          pour la taille du tableau, je me suis arreté a 10, a toi d'augmenter juska 50 ou plus si tu veux.


          unit U_Tableau;

          Interface

          type indice = cardinal;

          type tableau = array [ 1 .. 10 ] of cardinal ;

          // Lecture du tableau
          procedure lireTableau ( out t : tableau ) ;

          // Affichage des elements du tableau
          procedure afficherTableau ( const t : tableau ) ;

          // Retourne l'indice du plus grand element du tableau
          // à partir de l'indice k jusqu'a taille du tableau
          function indice_du_max ( t : tableau; k : indice ) : indice;

          Implementation

          // Lecture du tableau
          procedure lireTableau ( out t : tableau ) ;
          var i : cardinal;
          begin
          for i := low(t) to high(t) do begin
          readln(t[i]);
          end;
          end;

          // Affichage des elements du tableau
          procedure afficherTableau ( const t : tableau ) ;
          var i : cardinal ;
          begin
          for i := low(t) to high(t) do begin
          write(t[i],' ') ;
          end;
          writeln;
          end;

          // Retourne l'indice du plus grand element du tableau
          // à partir de l'indice k jusqu'a taille du tableau
          function indice_du_max ( t : tableau; k : indice ) : indice;
          var ind,i : cardinal;
          begin
          ind := k;
          for i := succ(k) to high(t) do begin
          if t[i] > t[ind] then begin
          ind := i;
          end;
          end;
          indice_du_max := ind;
          end;

          End.


          et si tu veux tester l'unité, utilise ce bout de code.....
          il fait aussi le rangement dans l'ordre decroissant.


          program teste_U_Tableau;

          uses crt,U_Tableau;

          // Procedure qui echange les valeurs de 2 elements
          procedure echanger ( var x,y : cardinal );
          var z : cardinal;
          begin
          z := x;
          x := y;
          y := z;
          end;

          var tab : tableau;
          var i,k,a,b : cardinal;

          begin
          clrscr;

          lireTableau(tab);
          writeln('******************');
          afficherTableau(tab);
          writeln('*************************************');
          // Je met juste a partir de l'indice 7 du tableau pour tester
          // tu peux changer l'indice, à condition de ne pas depasser ton indice
          // max de ton tableau.
          writeln('Indice du Max du Tableau = ',indice_du_max(tab,7));

          a := low(tab);
          b := high(tab);
          for k := a to (b-1) do
          begin
          i := indice_du_max(tab,k);
          echanger(tab[k],tab[i]);
          end;

          writeln('*************************************');
          afficherTableau(tab);

          end.


          en esperant ke ca puisse t'aider....
          bon courage.
      2. ecrire une analyse et en deduir un algorithme intitulé neg qui transfere les elements positifs et les elements negatif d un tableau t dans deux tableaux tp et tn
        1. program neg;
          uses wincrt;
          type
          tab=array[1..60]of integer;
          var
          n,i,j,k:integer;
          t,tp,tn:tab;

          procedure saisie_n(var n:integer);
          begin
          repeat
          writeln('donner entier');
          readln(n);
          until (n>0)and (n<60);
          end;

          procedure remplir_t(n:integer;var t:tab);
          var i:integer;
          begin
          for i:=1 to n do
          begin
          writeln('donner entier');
          readln(t[i]);
          end;
          end;
          procedure classement(n:integer;t:tab;var tp ,tn:tab);
          var i,j,k:integer;
          begin
          for i:=1 to n do
          begin
          if t[i]<0 then
          begin
          for j:=1 to n do
          tn[j]:=t[i];
          end;
          if t[i]>=0 then
          begin
          for k:=1 to n do
          tp[k]:=t[i];
          end;
          end;
          end;
          procedure affichage(n:integer;t,tn,tp:tab);
          begin
          for i:=1 to n do
          writeln('le tableau a analyser :'t[i]);
          for j:=1 to n do
          writeln('le tableau positif est :',tp[j]);
          for k:=1 to n do
          writeln('le tableau negatif est:',tn[k]);
          end;
          begin
          saisie_n(n);
          remplir_t(n,t);
          classement(n,t,tp,tn);
          affichage(n,t,tp,tn);
          end.

          ****************************************************************************************
          essaye le c mieux que rien chui pas sur et je ne l'ai pas encore compilé.bonne chance!
          ****************************************************************************************
        2. Modérateur
          @robinTa procedure classement ne donne pas le résultat voulu...
          En fait dans ton algoritme tn=t si t[n]<0 et tp=t si t[n]>=0...
          De plus le type de tab est inadapté...
          const Nmax=60;
          
          type Tab=record
                   a:array[1..Nmax] of integer;
                   n:integer;
                   end;
          
          procedure Neg(var t,tn,tp:Tab);
          var i:integer;
          begin
          tn.n:=0;
          tp.n:=0;
          for i:=1 to t.n do
              if t.a[i]<0 then begin
                               tn.a[i]:=t.a[i];
                               inc(tn.n);
                               end
                          else begin
                               tp.a[i]:=t.a[i];
                               inc(tp.n);
                               end
          end;
          Pour le reste il est à noter que remplir_t et affichage sont également fausses
          procedure remplir_t(n:integer;var t:tab); // avec TON type tab
          var i:integer;
          begin
               for i:=1 to n do
                   saisie_n(t[i]);
          end;
          
          procedure affichage(n:integer;t,tn,tp:tab); // avec TON type tab
          var i:integer;
          begin
          write('le tableau a analyser : ');
          for i:=1 to n do
              write(t[i],' ');
          writeln('le tableau positif  : ');
          for i:=1 to n do
              write(tp[i],' ');
          writeln('le tableau negatif  : ');
          for i:=1 to n do
              write(tn[i],' ');
          end; 
          --
          La confiance n'exclut pas le contrôle 
      3. Bonjour,
        vous etes etudiant(e) a la fac d'el jadida ?????
        1. la solution d'un programme qui cherche les point selle d''une matrice