Rechercher : dans
Par :

[Turbo Pascal] Solution d'un exercice

Dernière réponse le 15 nov 2009 à 11:17:51 butterfly66, le 19 oct 2007 à 23:49:28 
 Signaler ce message aux modérateurs

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

1

question, le 7 nov 2007 à 03:41:06
  • +1

Bonjour,
vous etes etudiant(e) a la fac d'el jadida ?????

Répondre à question

2

butterfly66, le 13 nov 2007 à 18:48:32

Oui, je suis étudiant à l'UCD

Répondre à butterfly66

4

ahmedo, le 27 mar 2008 à 21:18:02

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

Répondre à ahmedo

7

robin, le 27 jui 2008 à 12:00:00

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!
****************************************************************************************

Répondre à robin

8

KX, le 27 jui 2008 à 13:18:38
  • +2

Ta 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 

Répondre à KX

5

amine, le 13 mai 2008 à 22:47:16

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

Répondre à amine

6

mounk, le 14 mai 2008 à 02:37:13

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.

Répondre à mounk

9

 raifie, le 15 nov 2009 à 11:17:51

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

Répondre à raifie