[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
    4
    1. 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
      3
      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!
        ****************************************************************************************
        0
      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 
        0
    2. Bonjour,
      vous etes etudiant(e) a la fac d'el jadida ?????
      1
      1. la solution d'un programme qui cherche les point selle d''une matrice
        0
    3. oui, je suis étudiant à l'UCD
      0
      1. Bonjour,
        Je cherche la solution du preoblème suivant en Pascal
        0
        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.
          0
      2. la solution d'un programme qui cherche les points selles d'une matrice
        0