k ième plus petit élément

Aller en bas

k ième plus petit élément

Message  Admin le Dim 17 Avr - 17:31

ÉNONCÉ
Ecrivez un programme intitulé K_ppe permettant de déterminer et d’afficher le K ième plus petit élément (1<=k<=N), s’il existe, et l’indice de sa première apparition dans un tableau T de N entiers (N>=2).
Remarques :
Si le K ième plus petit élément ne figure pas dans un tableau T, le programme doit afficher le message suivant : « pas de Kième petit élément »
Exemple :
Soit le tableau T suivant :
T: 5 2 7 2 1 4 9 4 1 1


Pour K =3
Le 3 ième plus petit élément est 4 et l’indice de sa première apparition est 6.

PASCAL
program k_ppe;
uses wincrt;
type
tab=array[1..100] of integer;
var
pos1,app,i,j,k,mi,n,aux:integer;
t: tab;
ok:boolean;
function min1(t:tab;j,n:integer):integer;
var
min:integer;
begin
min:=t[1];
for i:= 2 to n do if (j =1) and (t[i] < min) then min:=t[i]
else
if (t[i] < min) and (t[i] > aux) then min:=t[i];
min1:=min;
end;
function position (t:tab;ok:boolean;aux,i:integer):integer;
var
pos:integer;
begin
i:=1;
ok:=true;
while (i<=n) and (ok = true)do
begin
if t[i] = aux then begin
ok:=false;
pos:=i; end; i:=i+1; end;
position :=pos; end;
procedure affichage (k,app,pos1:integer);
begin
if k<> app then writeln('pas de ', k,' ieme petit élement') else
writeln ('le', k,'ieme petit élément est = ', mi,'et l''indice de sa premiére apparition est ',pos1);
end;
begin
app:=0;
repeat
writeln ('saisir la taille du tableau');
readln (n);
until n >=2;
repeat
writeln('saisir le k ieme');
readln(k);
until k in [1..n];
for i:= 1 to n do
begin
writeln ('l''element n°',i);
readln(t[i]);
end;
aux:=t[1];
for j:=1 to k do
begin
mi:=min1(t,j,n);
if (aux<>mi) then app:=app+1;
aux:=mi;
end;
pos1:=position (t,ok,aux,i);
affichage(k,app,pos1);
end.


Admin
Admin

Messages : 137
Date d'inscription : 29/12/2010

Voir le profil de l'utilisateur http://aidescolaire.yoo7.com

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum